javascript - 使用 Prototype 的 Class.create 定义私有(private)/ protected 属性和方法

标签 javascript oop private prototypejs protected

有一个很好的通用方法可以在 Javascript 中定义私有(private)和 protected 属性和方法,here on the site .但是,当前版本的 Prototype (1.6.0) 没有通过其 Class.create() 定义它们的内置方式。语法。

我很好奇当开发人员在使用 Prototype 时想要定义私有(private)和 protected 属性和方法时,最佳实践是什么。有没有比通用方法更好的方法?

最佳答案

您可以做的是在原型(prototype)的构造函数(初始化)中使用局部变量,然后创建一个闭包来访问/公开此变量给您的公共(public)方法。

这是一个代码示例:

// properties are directly passed to `create` method
var Person = Class.create({
   initialize: function(name) {
      // Protected variables
      var _myProtectedMember = 'just a test';

      this.getProtectedMember = function() {
         return _myProtectedMember;
      }

      this.name = name;
   },
   say: function(message) {
      return this.name + ': ' + message + this.getProtectedMember();
   }
});

这是道格拉斯·克罗克福德关于这个主题的理论。

http://www.crockford.com/javascript/private.html

关于javascript - 使用 Prototype 的 Class.create 定义私有(private)/ protected 属性和方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/895712/

相关文章:

javascript - 在 es6 中扩展单例类

java - 我什么时候会在 Java 中使用类变量与实例变量?

java - 但是,不应过度使用创建静态实用程序方法吗?如何避免呢?

javascript - "private property"在 ES6 类中意味着什么?

c++ - 无法访问类中声明的私有(private)成员

javascript - 使用 Passport-local 和 $routeProvider 进行 MEAN Stack 用户身份验证

javascript - 启动时调用函数时单元测试失败

javascript - IE9 中非常奇怪的问题,整个页面跳转

c++ - 为什么此代码允许访问私有(private)变量

javascript - mongoDB 中的嵌套对象文本搜索