JavaScript中更简单的“类”定义

时间:2012-09-07 20:55:54

标签: javascript object ecmascript-5

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

1 个答案:

答案 0 :(得分:2)

您可以增加Object.prototype来实现这一目标:

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

    enumerable: false
});