Конструктор функции - добавление функции с использованием прототипа - Uncaught SyntaxError: Неожиданный токен {
Я пытался добавить функцию y()
в конструктор объекта x
используя прототип цепочки. Это приводит к unexpected
ошибка:
Неожиданный маркер
{
function x(a, b) {
this.a = a
this.b = b
}
x.prototype.y(){
console.log('hello')
}
Я хочу функцию х как:
function x(a, b) {
this.a = a;
this.b = b;
y()
}
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();
Вы не можете использовать этот синтаксис - вам нужно объявить его так:
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();
Вы должны взглянуть на классы 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