Я шел на что-то странное, делая сегодня код JS.Оператор области и OR в Javascript
Я хотел выполнить метод объекта, если это свойство существует, и какую-то другую функцию, если это не так. чувство немного фантазии, я написал что-то вроде:
var obj = {
method: function(){
console.log(this);
}
}
(obj.method || some_other_function)();
Это выполняющей obj.method
, если она существует, и some_other_function
иначе.
Но this
ключевое слово относится к window
объекта, когда obj.method выполняется, и я абсолютно не знаю, почему.
Обратите внимание, что выполнение (obj.method)();
дает ожидаемый результат (это в виду мой объект)
Очевидно, что я не нужду этот синтаксис, чтобы сделать мой код запуска, но я на самом деле интересно, что здесь происходит.
Я не мог найти ответа ни здесь, ни в другом месте, ближайшая вещь, которую я нашел, это this interesting post, но она не охватывает этот конкретный случай.
Кто-нибудь знает, что там происходит?
вот fiddle, показывающий предмет в действии!
Я бы порекомендовал прочитать это (длинно-ное, но хорошо объясненное): https://github.com/getify/You-Dont-Know-JS/blob/master/this%20&%20object%20prototypes/ch2.md –
Спасибо за ссылку! Я стараюсь читать вещи, смотреть вещи, и я как бы нахожу свой путь, когда я кодирую, но у JS определенно есть некоторые особенности! Эта статья кажется очень подробной, спасибо снова! – mikake