javascript – 私有方法和字段

前端之家收集整理的这篇文章主要介绍了javascript – 私有方法和字段前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在评估selfish,我想知道如何声明私有方法/字段?

最佳答案
执行私有功能的常用方法是使用各种“方法关闭功能,例如:拿起他们的狗示例,改变这个:

// The basic Dog example
var Dog = Base.extend({
  bark: function() {
    return 'Ruff! Ruff!'
  }
});

// Adding a private function
var Dog = Base.extend((function(){
  function trulyPrivate() {
    console.log(this.bark());
  }

  return {
    bark: function() {
      return 'Ruff! Ruff!'
    },logBark: function() {
        trulyPrivate.call(this);
    }
  };
})());

用法

new Dog().logBark();  // logs "Ruff! Ruff!" using the truly private function behind the scenes

在私有字段中,通常的方法是在构造函数中构建需要真正私有字段的任何东西,这样它们就可以关闭构造函数调用中的(私有)变量,a’la Crockford’s pattern

function Foo(arg) {
    var trulyPrivateData = arg;

    this.logIt = function() {
        console.log(trulyPrivateData);
    };
}

用法

var f = new Foo(42);
f.logIt(); // logs 42 even though there's no way,externally,to get that value from `f`

… selfish取消了实际的构造函数,但初始化函数应该用于相同的目的:

var Dog = Base.extend({
  initialize: function(arg) {
    var woof = arg || 'Ruff! Ruff!';
    this.bark = function() {
        return woof;
    };
  }
});

现在,你不能设置纬线(除了在施工时,因为我们故意这样做),你只能从树皮中取回它.例如,它是真正的私人(除了我们明确允许树皮返回它).

如果你了解这方面的技术细节,我博客上的这些文章可能(或可能不是)有用,因为当你进入私人职能部门时,你通常必须开始管理:

> Mythical Methods
> You must remember this
> Private Methods in JavaScript(严重需要更新/重写)

如果你想要另一个东西来评估,那就是我的Lineage project,它同样是纯粹的原型继承,但是可以轻松访问父对象的属性,函数等,以及一种主动鼓励私有范围的语法.

猜你在找的JavaScript相关文章