2012-01-29 4 views
2

Я пытаюсь округлить свои знания Javascript. Это похоже на такую ​​простую вещь, но это меня озадачивает.Использование имени метода в качестве значения для переменной экземпляра

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

var someobj = { 
    someMethod: function() { 
     console.log('woo'); 
    }, 
    somevariable: this.someMethod 
} 

Там нет обратных вызовов, всё просто и красиво.

console.log(someobj.someMethod); 

Возвращает:

[Function] 

Великий. Но:

console.log(someobj.somevariable) 

Возвращает:

undefined 

Я ожидал, что это вернуть "[Function]. Почему это?

Спасибо.

ответ

1

При объявлении объектов в формате JSON нет ключевого слова this. (ну, есть, но я ссылаюсь на внешнего контекста, например window в глобальном контексте). Вы не можете получить доступ к текущему объекту в таком объявлении. После этого вам необходимо будет установить эту переменную:

var someobj = { 
    someMethod: function() { 
     console.log('woo'); 
    } 
} 
someobj.somevariable = someobj.someMethod; 
Смежные вопросы