作者:辞骸 | 来源:互联网 | 2022-12-06 18:50
给定两个类,我想给出一个到另一个的方法:
class a {}
class b {say() {console.log('hello')}}
var foo = new a();
为什么这样有效:
a.prototype.say = b.prototype.say;
foo.say(); //'hello'
但这不是吗?
a.prototype = b.prototype;
foo.say(); //foo.say is not a function
要清楚,我不是问如何将一个类的方法给另一个类,但为什么原型的行为是这样的.
额外问题:在类块中定义方法与通过直接将其分配给原型来定义方法之间的区别是什么?
1> Mark Meyer..:
原因是prototype
在类上是一个不可写,不可配置的属性:
class a {}
class b {say() {console.log('hello')}}
console.log(Object.getOwnPropertyDescriptor(a,'prototype'))