首页 > web前端 > js教程 > 正文

如何从 JavaScript 中的原型定义函数访问私有变量?

Susan Sarandon
发布: 2024-10-27 20:16:30
原创
765 人浏览过

How can you access private variables from prototype-defined functions in JavaScript?

JavaScript 函数定义中的访问限制

在 JavaScript 中,变量对函数的可访问性取决于函数定义的范围。在构造函数内声明的私有变量只能由该构造函数作用域内的函数访问。当函数在构造函数外部定义时,例如使用原型属性,这会带来限制。

原型定义的函数和私有变量

考虑以下代码,其中TestClass 有一个私有变量 privateField:

TestClass = function(){
    var privateField = "hello";
    this.nonProtoHello = function(){alert(privateField)};
};
TestClass.prototype.prototypeHello = function(){alert(privateField)};
登录后复制

在此示例中,构造函数中定义的 nonProtoHello 可以访问 privateField,而使用原型定义的prototypeHello 则不能。这是因为原型上定义的函数未在构造函数的范围内定义。

重写私有变量访问

不可能允许原型定义的函数直接访问私有变量。这本质上会创建一个 JavaScript 不支持的反向作用域机制。

替代方案:Getters 和 Setters

要启用原型定义的函数来操作私有变量,您可以使用此对象在构造函数中创建 getter 和 setter。这些公共方法可以访问私有变量并允许它们被原型函数更改。这是一个示例:

function Person(name, secret) {
    // public
    this.name = name;

    // private
    var secret = secret;

    // public methods have access to private members
    this.setSecret = function(s) {
        secret = s;
    }

    this.getSecret = function() {
        return secret;
    }
}

// Must use getters/setters 
Person.prototype.spillSecret = function() { alert(this.getSecret()); };
登录后复制

以上是如何从 JavaScript 中的原型定义函数访问私有变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!