function DoSomething()
{
var scope = this;
}
考虑以下调用它的方法: 选项1:
var self= this;
$someElement.change(self.DoSomething);
选项2:
var self= this;
$someElement.change(function(){self.DoSomething();});
为什么触发更改事件时,第一行代码导致scope
成为触发事件的元素,但第二行导致scope
相同作为self
,但第二个?
由于我不明白这里的概念,因此谷歌很难找到正确的搜索词。
答案 0 :(得分:0)
jQuery在原始元素的上下文中调用给定的函数。
选项1:
您已将self.DoSomething
作为一项功能通过
jQuery将在self.DoSomething
:
$someElement
执行以下代码:
var self = this;
self.DoSomething.call($someElement);
function DoSomething()
{
// this = $someElement
var scope = this;
}
DoSomething
this
内的等于被叫方 - $someElement
。
选项2:
您已将匿名函数作为函数传递。
jQuery将在$someElement
:
var self = this;
function() {
self.DoSomething();
}.call($someElement);
function() {
// this = $someElement, as well
self.DoSomething(); // LOOK! You call self's method. Not within any context
}
function DoSomething()
{
// default function call, default this is presented
}