javascript – 私有方法和字段

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

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

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

  1. // The basic Dog example
  2. var Dog = Base.extend({
  3. bark: function() {
  4. return 'Ruff! Ruff!'
  5. }
  6. });

  1. // Adding a private function
  2. var Dog = Base.extend((function(){
  3. function trulyPrivate() {
  4. console.log(this.bark());
  5. }
  6. return {
  7. bark: function() {
  8. return 'Ruff! Ruff!'
  9. },logBark: function() {
  10. trulyPrivate.call(this);
  11. }
  12. };
  13. })());

用法

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

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

  1. function Foo(arg) {
  2. var trulyPrivateData = arg;
  3. this.logIt = function() {
  4. console.log(trulyPrivateData);
  5. };
  6. }

用法

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

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

  1. var Dog = Base.extend({
  2. initialize: function(arg) {
  3. var woof = arg || 'Ruff! Ruff!';
  4. this.bark = function() {
  5. return woof;
  6. };
  7. }
  8. });

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

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

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

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

猜你在找的JavaScript相关文章