0

我注意到在 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,恕我直言。

4

1 回答 1

2

您可以扩充Object.prototype以实现此目的:

Object.defineProperty( Object.prototype, "defineProperty", {
    value: function( name, pd ) {
        return Object.defineProperty( this, name, pd );
    },

    enumerable: false
});
于 2012-09-07T21:14:15.333 回答