我尝试使用原型链将函数y()
添加到对象构造函数x
中。结果为unexpected
错误:
意外令牌
{
function x(a, b) {
this.a = a
this.b = b
}
x.prototype.y(){
console.log('hello')
}
我希望函数x为:
function x(a, b) {
this.a = a;
this.b = b;
y()
}
答案 0 :(得分:2)
您没有将y
分配给一个函数。您的语法无效。而是使用anonymous function:
x.prototype.y = function() {...}
请参见下面的工作示例:
function x(a, b) {
this.a = a
this.b = b
}
x.prototype.y = function() {
console.log('hello');
}
let a = new x(1, 2);
a.y();
如果您希望该方法为静态,则可以省略prototype
:
function x(a, b) {
this.a = a
this.b = b
}
x.y = function() {
console.log('hello');
}
x.y();
答案 1 :(得分:1)
您不能使用该语法-您需要这样声明它:
x.prototype.y = function() {
console.log("Hello");
};
这是因为您要为对象的属性分配匿名函数-就像您在构造函数中一样。这是您的代码的完整示例:
function x(a, b) {
this.a = a
this.b = b
}
x.prototype.y = function() {
console.log("Hello");
};
var anX = new x("a", "b");
anX.y();
答案 2 :(得分:0)
您应该看看JavaScript classes。
我可以将您的代码重写为:
class X {
constructor(a, b) {
this.a = a
this.b = b
}
y() {
console.log('Hello')
}
}
let x = new X(1, 2)
x.y()
// output: Hello