【发布时间】:2017-10-24 20:55:47
【问题描述】:
假设有一个人:
const Person = function(fname, lname) {
this.fname = fname;
this.lname = lname;
};
我想用一个“名称”getter 来扩展它的功能
Object.defineProperty(Person.prototype, 'name', {
get: () => `${this.fname} ${this.lname}`
});
但是,这不起作用。 getter 中的this 不是调用它的实例原型:
const p = new Person('Taylor', 'Swift');
p.name // "undefined undefined"
而是属性定义的范围:
fname = 'Someone';
lname = 'Else';
p.name // "Someone Else"
【问题讨论】:
标签: javascript ecmascript-6 this defineproperty