从原型定义的函数访问私有成员变量
在 JavaScript 中,构造函数中定义的私有成员变量无法被原型访问 -定义的方法。这在下面的代码片段中很明显:
TestClass = function(){ var privateField = "hello"; this.nonProtoHello = function(){alert(privateField)}; }; TestClass.prototype.prototypeHello = function(){alert(privateField)};
虽然nonProtoHello成功访问privateField,但prototypeHello失败。
推理
函数,包括prototype -定义的方法,可以访问它们定义的范围。私有成员变量在构造函数范围内定义,使得原型定义的方法无法访问它们。
解决方案
为原型方法提供对私有变量的访问:
例如:
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中文网其他相关文章!