Ответ 1
Вы не можете. Это невозможно. this
в функциях стрелок лексически охвачены, что их выдающаяся особенность. Но вам нужна динамически связанная this
, и что для function
полезно.
Если вы настаиваете на использовании новых функций ES6, перейдите к определению метода:
function defineProperty(object, name, descriptor) {
if (object.prototype)
Object.defineProperty(object.prototype, name, descriptor);
}
defineProperty(String, "isEmpty", {get(){return this.length === 0;}, configurable:true});
Конечно, вы также можете взять обратный вызов, который получает экземпляр в качестве аргумента:
function defineProperty(object, name, callback) {
if (object.prototype)
Object.defineProperty(object.prototype, name, {
get(){ return callback(this); }, // dynamic this
configurable: true
});
}
defineProperty(String, "isEmpty", self => self.length === 0);