От вашего кода d не совпадает с «этим». d будет функция е, так как вы настраиваете d, чтобы быть возвращаемым значением вызова функции абы(), которая возвращает функцию, так
d = function e(){
return this;
}
Теперь значение this
зависит от того, как вы называете эту функция d , this
будет оцениваться при вызове этой функции. Если вы просто назовете это d()
this
будет глобальным Window
Объект.
и позволяет сказать, если у меня есть
obj ={foo:1, bar:2};
и зову, как это
d.call(obj)
this
будет объект OBJ. метод call() используется для вызова функции на любом объекте, переданный объект ведет себя как this
внутри этой функции.
Я знаю Javascript, это действительно сбивает с толку, и вам нелегко обвести его вокруг. Возможно, это может помочь http://devlicio.us/blogs/sergio_pereira/archive/2009/02/09/javascript-5-ways-to-call-a-function.aspx
вы можете попробовать сделать console.log (это); внутри функции –
Мое голосование будет «во время выполнения». – aroth
Этот вопрос почти задавался столько раз, сколько раз анализировать HTML с регулярным выражением (lol). http://stackoverflow.com/questions/3320677/this-operator-in-javascript – Marty