在jQuery.each()循环中,我一直认为这this相当于valueOfElement.有人可以解释这个区别吗?
例:
$.each(object, function(i, val){
$('body').append('<b>valueOfElement:</b> ' + typeof val + ' - ' +
'<b>this: </b>' + typeof this + '<br/>');
});
Run Code Online (Sandbox Code Playgroud)
结果:
valueOfElement: string - this: object
valueOfElement: boolean - this: object
valueOfElement: object - this: object
Run Code Online (Sandbox Code Playgroud)
Den*_*ret 14
答案在您链接到的文档中:
也可以通过this关键字访问该值,但Javascript将始终将此值包装为Object,即使它是一个简单的字符串或数字值.
访问时,所有值都嵌入到对象中this.
真正的原因可以在这行jQuery源代码中找到:
callback.call( obj[ i ], i, obj[ i++ ] ) === false ) {
Run Code Online (Sandbox Code Playgroud)
你可以将它与之比较
(function(){console.log(this)}).call(1);
Run Code Online (Sandbox Code Playgroud)
构建一个Number,因为你不能在不是对象的东西上调用函数.
来自MDN的呼叫功能:
thisArg:
请注意,这可能不是方法看到的实际值:如果方法是非严格模式代码中的函数,则null和undefined将替换为全局对象,并且原始值将被加框.
我将使用唯一看到的优点this,而不是valueOfElement有:
this即使valueOfElement是原始类型,也能直接使用函数| 归档时间: |
|
| 查看次数: |
764 次 |
| 最近记录: |