Конструктор функции - добавление функции с использованием прототипа - Uncaught SyntaxError: Неожиданный токен { - PullRequest
0 голосов
/ 08 декабря 2018

Я попытался добавить функцию 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() 
}

Ответы [ 3 ]

0 голосов
/ 08 декабря 2018

Вы не назначаете 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();
0 голосов
/ 08 декабря 2018

Вы должны взглянуть на классы JavaScript .

Я могу переписать ваш код в:

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
0 голосов
/ 08 декабря 2018

Вы не можете использовать этот синтаксис - вам нужно объявить его следующим образом:

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