我需要使用新语法向Javascript类添加方法。我试过这种方式:
class X{
constructor() {
this.a = 'b'
}
x(){
}
}
X.prototype.y = function (){
console.log('y')
}
var x = new X()
x.y()
console.log(X) // print the the class but not the new method.
它只是打印:
class X{
constructor() {
this.a = 'b'
}
x(){}
}
但我期待
class X{
constructor() {
this.a = 'b'
}
x(){}
y(){
console.log('y');
}
}
如何向Javascript类添加新方法?
答案 0 :(得分:3)
这很好,如果您在谷歌Chrome控制台中查看此内容,请通过展开 proto 节点进行检查。
或者尝试检查
console.log(X.y)
或console.log(X.prototype.y)
或console.log(x.y)
这必须打印该功能
答案 1 :(得分:-1)
只需将新方法添加到类声明中:
class X {
constructor() {
this.a = 'b'
}
y() {
console.log('y');
}
}
新的类语法基本上是原型模式的包装器。
但是,如果您希望在现有类上使用基于的新类,则可以将新类声明为具有extends
的现有类的扩展。例如:
class Y extends X {
constructor() {
super();
}
someNewMethod() {...}
}
let foo = new Y();
console.log(foo.a); // 'b'
foo.y(); // 'y