首页  >  文章  >  web前端  >  如何从 JavaScript 中的原型定义函数访问私有成员变量?

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

Susan Sarandon
Susan Sarandon原创
2024-10-26 14:10:30443浏览

How to Access Private Member Variables from Prototype-Defined Functions in JavaScript?

从原型定义的函数访问私有成员变量

在 JavaScript 中,构造函数中定义的私有成员变量无法被原型访问 -定义的方法。这在下面的代码片段中很明显:

TestClass = function(){
    var privateField = "hello";
    this.nonProtoHello = function(){alert(privateField)};
};
TestClass.prototype.prototypeHello = function(){alert(privateField)};

虽然nonProtoHello成功访问privateField,但prototypeHello失败。

推理

函数,包括prototype -定义的方法,可以访问它们定义的范围。私有成员变量在构造函数范围内定义,使得原型定义的方法无法访问它们。

解决方案

为原型方法提供对私有变量的访问:

  • 在 this 对象上定义 getter 和 setter。
  • 原型方法可以访问这些 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()); };

这种方法允许原型定义的方法通过 getter 和 setter 与私有成员变量交互,同时保持封装性。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn