Javascript 您能否更改ES6类定义以附加新的实例方法?
是否有任何方法可以追溯(即在类已经定义之后)向ES6类添加实例方法 考虑以下类别:Javascript 您能否更改ES6类定义以附加新的实例方法?,javascript,class,methods,ecmascript-6,Javascript,Class,Methods,Ecmascript 6,是否有任何方法可以追溯(即在类已经定义之后)向ES6类添加实例方法 考虑以下类别: class Thing {} 现在我想将hello方法附加到Thing,然后可以在其实例上调用该方法,如下所示: let thing = new Thing(); thing.hello(); 可能吗 (当然,我可以创建一个子类,但这不是我在这里要问的。)只需使用原型,就像在ES5中一样: class Thing { hello () { console.log('Hey!'); } } v
class Thing {}
现在我想将hello
方法附加到Thing
,然后可以在其实例上调用该方法,如下所示:
let thing = new Thing();
thing.hello();
可能吗
(当然,我可以创建一个子类,但这不是我在这里要问的。)只需使用
原型,就像在ES5中一样:
class Thing {
hello () {
console.log('Hey!');
}
}
var t = new Thing();
t.hello(); // Hey!
Thing.prototype.goodbye = function () {
console.log('Bye!');
}
t.goodbye(); // Bye!
或者您可以使用
Object.assign(Thing.prototype, {
hello(arg1, arg2) {
// magic goes here
}
});
这相当于
Thing.prototype.hello = function (arg1, arg2) {
// magic goes here
};
不完全等效-您使用的是方法声明。哦,super
也不行。@Bergi:aah。现在明白了。感谢您让我知道:)原型继承的工作原理与ES5相同。只需添加另一个属性。不过,添加一个方法(在ES6意义上)使其与在类文本中声明的方法一样工作是很困难的。