Javascript Object Literal - вызов - PullRequest
1 голос
/ 21 июля 2011

Как вызывать свойство в методе конкретного объекта - вот пример:

var myObject ={
    firstProperty : 0,
    secondProperty : 0,
    myMethod : function(){
         // this is where I'm not quite sure
          $(this).firstProperty = 1;
    }
}

Я уверен, что $ (this) .firstProperty = 1 неверно - но как бы я назвал свойство в методе объекта (self, this и т.д.)?

Ответы [ 2 ]

3 голосов
/ 22 июля 2011

Лучший способ сделать это - вообще не использовать this:

var myObject ={
    firstProperty : 0,
    secondProperty : 0,
    myMethod : function(){
          myObject.firstProperty = 1;
    }
}

Причина в том, что значение this меняется в зависимости от контекста.Например, с кодом в вашем вопросе, что происходит, когда вы делаете document.getElementById('somelement').onclick = myObject.myMethod?Ответ в том, что вместо firstProperty будет установлено значение somelement.То же самое касается:

var f = myObject.myMethod;
f(); // firstProperty is now set on the window object!
console.log(window.firstProperty); // Logs 1 to the console

Так что будьте осторожны:)

2 голосов
/ 21 июля 2011
Какой способ вызова свойства в методе конкретного объекта

очень сбивает с толку ....

Я думаю, что другой способ задать это

Какссылаться на свойство объекта из одного из его методов?

Если это точный способ объяснить, что вы ищете, тогда ...

В этом случае this будет ссылаться на myObject.

, поэтому this.firstProperty должно работать.

...