0

我尝试使用原型链接将函数添加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() 
}
4

2 回答 2

3

您没有分配y给功能。您的语法无效。相反,使用匿名函数

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();

于 2018-12-08T07:13:49.720 回答
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();

于 2018-12-08T07:13:20.180 回答