gpt4 book ai didi

javascript - jquery.each() - "this"与 valueOfElement

转载 作者:数据小太阳 更新时间:2023-10-29 04:30:16 25 4
gpt4 key购买 nike

jQuery.each() 中循环,我一直认为 this 等同于 valueOfElement。有人可以解释一下区别吗?

例子:

$.each(object, function(i, val){
$('body').append('<b>valueOfElement:</b> ' + typeof val + ' - ' +
'<b>this: </b>' + typeof this + '<br/>');
});

结果:

valueOfElement: string - this: object
valueOfElement: boolean - this: object
valueOfElement: object - this: object

Fiddle

最佳答案

答案在您链接到的文档中:

The value can also be accessed through the this keyword, but Javascript will always wrap the this value as an Object even if it is a simple string or number value.

当作为 this 访问时,所有值都嵌入到对象中。

真正的原因可以在jQuery source这一行中找到:

callback.call( obj[ i ], i, obj[ i++ ] ) === false ) {

你可以比较一下

(function(){console.log(this)}).call(1);

它构建了一个 Number,因为您不能在不是对象的东西上调用函数。

来自 MDN on the call function :

thisArg :

Note that this may not be the actual value seen by the method: if the method is a function in non-strict mode code, null and undefined will be replaced with the global object, and primitive values will be boxed.

我认为使用 this 而不是 valueOfElement 的唯一优势是:

  • 简单:您不必牢记回调参数的顺序
  • 即使 valueOfElement 是原始类型,也可以直接在 this 上使用函数

关于javascript - jquery.each() - "this"与 valueOfElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13123360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com