JQuery.each将字符串文字转换为字符串.为什么?
JQuery.each converts string literals to Strings. Why?
我将介绍peepcode jQuery示例(https://peepcode.com/products/jquery)我选择更新所有的依赖关系。
毫不奇怪,我遇到了一个关于javascript中字符串文字和字符串对象之间差异的问题(这里有很好的讨论:为什么有两种javascript字符串?)
我遇到的一个问题是jQuery.each将字符串文本转换为string对象,而jQueryUI方法removeClass无法正确处理这一问题。以下是修复该问题的代码片段。
我想知道jQuery.each中的错误是否是将字符串文字错误地转换为字符串对象,或者removeClass应该假设它可以获得字符串文字或字符串对象
更新:我刚刚意识到还有另一个解决方法:数组中的字符串在jQuery.each()之后不再是字符串
这是代码:
jQuery.fn.extend({
taskStates:["task-empty", "task-x", "task-apostrophe", "task-dash"],
resetTaskStateClassNames: function() {
var elements = this;
// Commented code breaks as "this" becomes the String object not the literal
// and removeClass does not check for String Object
// jQuery.each(jQuery.fn.taskStates, function(){
// elements.removeClass(this); // this is the taskState
// })
jQuery.fn.taskStates.forEach( function(ts) {
elements.removeClass(ts);
});
return this;
},
这与jQuery无关。在非严格模式下,this
的值被强制到对象,就像被Object(this)
强制一样。
http://es5.github.com/#x10.4.3
10.4.3输入功能代码#Ⓣ
当控件进入函数对象F中包含的函数代码的执行上下文时,将执行以下步骤,调用方提供thisArg,而调用方提供argumentsList:
- 如果函数代码是严格代码,请将ThisBinding设置为thisArg
- 否则,如果thisArg是
null
或undefined
,则将ThisBinding设置为全局对象- 否则,如果类型(thisArg)不是对象,则将ThisBinding设置为
ToObject(thisArg)
- 否则,将ThisBinding设置为thisArg
这是有效的jQuery代码片段。我猜API(http://api.jquery.com/jQuery.each/)自从制作了电影演员阵容后就发生了变化。
jQuery.each(jQuery.fn.taskStates, function(index, value){
elements.removeClass(value); // this is the taskState as a string literal
})
除了可以在对象属性或数组上使用jQuery.each之外,我看不出简单地使用javascript forEach 有任何优势
相关文章:
- 为什么我的javascript程序没有将其转换为整数而不是字符串
- 为什么脚本标记被分解为两个字符串
- 为什么错误不能字符串化
- 为什么“{}+1”在Chrome和Firefox中排名第一,而字符串'[object object]1'
- 为什么不是't my元素:使用变量而不是字符串时包含(变量)功?jquery
- 为什么Javascript程序员更喜欢在代码中重复字符串作为常量,而不是使用枚举类型的对象
- 为什么我不能使用jQuery.parseJSON(json)解析json字符串
- 为什么不'将字符串转换为int不正确(parseInt)
- 为什么我得到“;错误:预期"同时访问字符串
- 为什么Javascript中的整数加空格加字符串会导致数字和字符串的总和?(2++'22'=24)
- 为什么 +str 在 JS 中比 str*1 更好地将字符串转换为数字
- 为什么字符串在 ES2015 中是可迭代对象
- 为什么我不必在 JS 中解码/解析 PHP 生成的 JSON 字符串
- 为什么 Javascript 在变量赋值时将 null 转换为字符串
- 为什么我的 React getDOMNode().textContent JavaScript 字符串不等于字符串
- 为什么我在 webpack 中需要 html 文件时会得到一个位置字符串
- 查找映射值,其中键是数组中的字符串.为什么会这样
- 使用数组处理 JavaScript 字符串 为什么它在控制台上打印“R”而不是“Z”
- JQuery.each将字符串文字转换为字符串.为什么?
- 谷歌应用脚本正在改变我的数组成字符串.为什么