【问题标题】:Simpler "Class" Definitions in JavaScriptJavaScript 中更简单的“类”定义
【发布时间】:2012-09-07 20:55:53
【问题描述】:

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

【问题讨论】:

    标签: javascript object ecmascript-5


    【解决方案1】:

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

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

    【讨论】:

    • 你正在阻止Object.defineProperty的正常使用。
    • @shhac 怎么样? Object.defineProperty 保持不变。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    相关资源
    最近更新 更多