Я думал, что знаю JavaScript, похоже, я этого не делаю.Использование `this` с объектными литералами
Я хочу определить такой объект. (Пример из http://www.phpied.com/3-ways-to-define-a-javascript-class/)
var apple = {
type: "macintosh",
color: "red",
getInfo: function() {
return this.color + ' ' + this.type + ' apple';
}
}
Ну, это выглядит хорошо, давайте печатать информацию ...
apple.getInfo() //returns "red macintosh apple" as expected
Хорошо, теперь взять функцию, и запустить его снова ...
var func = apple.getInfo; func(); //returns "undefined undefined apple"
Ну, это не то, что я ожидал. По-видимому, this
интерпретируется как window
. Это не то, что я хотел.
Мой вопрос: что такое идиоматический, предпочтительный способ перезаписи литерала apple
, так что apple.getInfo
возвращает функцию, которая может запускаться отдельно, но все еще использовала свойства объекта?
Также см. Http://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-context-inside-a-callback –