我首先在这个网站上发现了这个想法:
http://theburningmonk.com/2011/01/javascript-dynamically-generating-accessor-and-mutation-methods/
关键是将局部变量分配给类范围以设置动态类属性。
在这段代码中,我设置了一个局部变量 _this 等于类范围。但是由于某种原因,_this 的属性可以在类之外访问。为什么是这样?_this 在创建时被声明为私有成员。
var MyClass = function( arg )
{
var _this = this;
_this.arg = arg;
// Creates accessor/mutator methods for each private field assigned to _this.
for (var prop in _this)
{
// Camelcases methods.
var camel = prop.charAt(0).toUpperCase() + prop.slice(1);
// Accessor
_this["get" + camel] = function() {return _this[prop];};
// Mutator
_this["set" + camel] = function ( newValue ) {_this[prop] = newValue;};
}
};
var obj = new MyClass("value");
alert(obj.getArg());
这怎么会跑?它会提醒“价值”。这不应该是可访问的,因为 _this 是私下声明的。当我写这篇文章时,我做错了修改器/访问器分配;我还是这样。
我打算写这个,将这些方法分配给类范围:
// Accessor
this["get" + camel] = function() {return _this[prop];};
// Mutator
this["set" + camel] = function ( newValue ) {_this[prop] = newValue;};
但要么工作。为什么 _this 的私有方法可用?
任何帮助都是极好的!
谢谢,困惑的脚本