Внутри method()
вы устанавливаете свойство объекта, для которого вызывается метод, а не объекта функции, представляющего метод.
Это показывает разницу внутри метода:
this.method = function() {
this.parameter = 'abc'; // Set parameter on the object on which method() is called
this.method.parameter = 'xyz'; // Set parameter on the object representing the method itself
};
Это показывает разницу в доступе к свойству после вызова метода
p.method();
console.log(p.parameter); // Display property of the object p, equals 'abc'
console.log(p.method.parameter); // Display property of the function object representing method(), equals 'xyz'
Вы должны решить, нужно ли вам свойство для объекта функции или для p
объекта. Обратите внимание, что объект функции может совместно использоваться несколькими объектами, созданными конструктором Main()
. Следовательно, он будет вести себя аналогично статическому члену в таких языках, как C ++ или Java.
Если вы намереваетесь использовать свойство, определенное для объекта, ваш код должен выглядеть примерно так:
function Main() {
this.method = function() {
this.parameter = 'something_relevant'; // Set property on object on which method() is called.
};
}
var p = new Main();
p.method();
console.log(p.parameter); // Read property from object p.
Если вы намереваетесь использовать свойство, определенное для объекта функции, представляющего method()
, ваш код должен выглядеть примерно так:
function Main() {
this.method = function() {
this.method.parameter = 'something_relevant'; // Set property on function object representing method().
};
}
var p = new Main();
p.method();
console.log(p.method.parameter); // Read property from the function object.