javascript - 访问原型(prototype)函数中的私有(private)成员

标签 javascript

当向这样的原型(prototype)添加新函数时,您无权访问构造函数中定义的变量,因为它们超出了范围。

function Thing() {
    var something = 357;
}

Thing.prototype.doSomething = function () {
    // no access to something because it is out of scope
    console.log(something);
};

由于在构造函数中将函数添加到原型(prototype)时使用闭包,它可以访问那里定义的变量。

function Thing() {
    var something = 357;

    Thing.prototype.doSomething = function () {
        console.log(something);
    };
}

这是访问这些变量的好方法还是有更好的模式来实现相同的目标?有什么需要注意的陷阱吗?

最佳答案

您将无法从原型(prototype)访问私有(private)变量。但是,您可以访问公共(public)变量。我发现这是一个很好的权衡:

function Thing() {
    this._something = 357;
}

Thing.prototype.doSomething = function () {
    console.log(this._something);
};

在属性前放置 _ 的命名约定只是将其标记为私有(private)的一种非正式方式,尽管实际上并非如此。

关于javascript - 访问原型(prototype)函数中的私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28400402/

相关文章:

javascript - 使用延迟和传递变量链接多个 AJAX 调用

javascript - 使用 Javascript 使用 HTTP 以外的协议(protocol)连接服务器

javascript - Node.js 服务请求安全网站

javascript - 为什么在我将 jQuery 添加到页面后 "location"属性最终出现在 Object.keys() 中?

javascript - 使用 lodash 按属性连接对象数组

javascript - 函数返回值到变量

javascript - 如何在 Spotfire 仪表板负载上运行 IronPython 脚本

javascript - echart标题双击时如何触发事件

javascript - 如何使用 ngModel 进行逗号分隔输入并推送到数组?

PHP 表单无法正确更新 SQL 数据库