我注意到在ECMAScript标准中你有像defineProperty
这样的东西,就像定义属性和JavaScript对象中没有的东西一样,prototype
通过使用方法扩展对象,以及 - 不。有没有可以带你离开的简写:
Object.defineProperty(Person,"name",{
type : "string",
get : function(){ return this.$d.name; },
set : function(_v){ this.$d.name = _v }
})
就像这样简单:
function Person(args){
// ... snip ...
this.defineProperty("name",{
get : function() { return $d.name },
set : function(_v) { $d.name = _v; },
type : "string"
});
// ... snip ...
}
我很确定使用JavaScript的魔力有一种更简单的方法。但我可能只是懒惰。有什么指针吗?
注意:我正在避免使用CoffeeScript,这太过于提醒Ruby,恕我直言。
答案 0 :(得分:2)
您可以增加Object.prototype
来实现这一目标:
Object.defineProperty( Object.prototype, "defineProperty", {
value: function( name, pd ) {
return Object.defineProperty( this, name, pd );
},
enumerable: false
});