Вот что меня озадачивает в JavaScript: в приведенном ниже коде у меня есть конструктор объектов, содержащий одно свойство. Ниже я добавляю несколько прототипов. Метод «method1» способен получить доступ к «this.property» просто отлично, и он возвращает значение 30. Метод «комбинировать» просто вызывает «метод1», но возвращает NaN. Кажется, что «this.property» был публичным для первого вызова, но не второго. Почему это странное поведение?js: метод не может получить доступ к свойству
var ObjBuilder = function()
{
this.property = 3;
};
ObjBuilder.prototype = function()
{
var method1 = function()
{
return this.property * 10;
}
var combine = function()
{
return method1() + 2;
}
return {method1: method1,
combine: combine};
}();
// instantiate an object and call its methods
var obj = new ObjBuilder();
console.log(obj.method1());//prints 30
console.log(obj.combine());//prints NaN. WHY???
Если вы зарегистрируете 'this' внутри' method1', тогда вызовите его внутри 'comb', вы увидите проблему – Li357
@ t.niese [Это не похоже на это] (https://jsfiddle.net/3ovc6Lye /) - 'window'. Вы должны назвать это 'this.method1()', чтобы дать этот контекст. – Li357