2016-01-06 1 views
0

если у меня есть функция как свойство объекта, действуют ли правила закрытия функции? я помню, что читал, что функция является объектом, но я также понимаю, что объект не является функцией.функционирует как свойство в объектах: ссылаясь на другие свойства внутри вашей функции

В частности, я могу захватить и отредактировать другие свойства внутри одного и того же объекта без ссылки на объект в этой функции? Вот пример:

someObj = { 
property : 44, 
calculate : function(){ 
    property * moreproperties; 
}; 

или я могу это сделать?

someObj = { 
property : 44, 
calculate : function(){ 
    someObj.property * someObj.moreproperties; 
}; 
+1

Использование 'this.property' –

+0

@ GOTO0 - это работает только в том случае, если * этот * внутри функции установлен в * someObj * (например, он называется 'someObj.calculate()', но не для 'var x = someObj.calculate ; x() '. – RobG

+0

Дублирующий вопрос не идентичен, но ответы подходят. – RobG

ответ

1

Вы можете сделать это с помощью ключевого слова this

someObj = { 
property : 44, 
calculate : function(){ 
    this.property * this.moreproperties; 
}; 

если у вас есть еще одна функция обратного вызова, как для события в JQuery магазине this в переменной

someObj = { 
property : 44, 
calculate : function(){ 
    var parent = this; 
    $('#some-element').click(function() { 
     parent.something * parent.somethingElse 
    }); 
}; 
Смежные вопросы