0

definePropertyECMAScript 標準では、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 に答える