Нет, вы должны использовать this
для ссылки на свойства объекта this
.Обратите внимание, что this
в JavaScript сильно отличается от this
в некоторых других языках, таких как C или Java.Больше здесь и здесь .
Ваш код выполняет доступ к аргументу number
, который был передан в функцию конструктора Peon
, а не к this.number
свойство, которое вы создали в конструкторе.Вот почему он не работает должным образом, но и не дает сбоя.
Нет смысла определять вашу inc
операцию в функции конструктора Peon
, BTWи некоторые веские причины этого не делать (каждый отдельный объект, созданный с помощью Peon
, получит свою собственную копию этой функции).Таким образом, вместо этого вы можете определить это так:
function Peon(number) {
this.number = number;
// Don't return values out of constructor functions, it's
// an advanced thing to do. In your case, you were returning
// `true` which was being completely ignored by the JavaScript
// interpreter. If you had returned an object, the `this` object
// created for the `new Peon()` call would have been thrown away
// and the object you returned used instead.
}
Peon.prototype.inc = function() {
++this.number;
};
var p=new Peon(10);
function returnNumber() {
p.inc();
alert(p.number); // alerts 11
}