2017-05-27 9 views

答えて

5

あなたはprototypeプロパティを使用し、セッターとゲッターを割り当てることができます。

ところで、ローカル変数ではなく、_fooをプロパティとして使用する必要があります。

function Something(defaultFoo) { 
 
    this._foo = defaultFoo; 
 
} 
 

 
Object.defineProperty(Something.prototype, 'foo', { 
 
    get: function() { 
 
     return this._foo; 
 
    }, 
 
    set: function(value) { 
 
     this._foo = value; 
 
    } 
 
}); 
 

 
var something = new Something("bar"); 
 
console.log(something.foo); 
 
something.foo = 'baz'; 
 
console.log(something.foo);

1

あなたはObject.assignで両方のアイデアを組み合わせることができ:

function Something(defaultFoo) { 
    var _foo = defaultFoo; 
    Object.assign(this, { 
     get Foo() { return _foo; }, 
     set Foo(value) { _foo = value; } 
    }); 
} 

あなたはそれを定義したことがないことから、しかし、一貫しているような、いないthis._fooとして_fooを参照してください。

また、ES6クラス表記で、あなたがこれを行うことができます - そしてここで私はthis._fooに値を保存:

class Something { 
    constructor(defaultFoo) { 
     this._foo = defaultFoo; 
    } 
    get Foo() { return this._foo; } 
    set Foo(value) { this._foo = value; } 
} 
関連する問題