首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >jQuery中的字符串字面量

jQuery中的字符串字面量

作者头像
用户7293182
发布2022-01-17 21:18:10
发布2022-01-17 21:18:10
56200
代码可运行
举报
文章被收录于专栏:jQuery每日经典jQuery每日经典
运行总次数:0
代码可运行

有些人想了解一些 jQuery选择器 的知识。我强烈推荐 艾伦的博客园,里面有jQuery源码分析系列,给出了详尽的讲解。

String不就是一个字符串吗?有什么好讨论的呢?

String object 和 String primitives 有什么不同呢?不就是用不用new关键字嘛。

实例

例一:

按理说以上代码应该 两个class 都加成功的,这是什么原因呢?

第一个想到的原因是后面的把前面的覆盖掉了。

例二:

好像不是被覆盖掉的,而是加new 关键字的 没有添加成功。

查看jQuery源码,发现了原因。

在jQuery源码中,所有判断传入参数是字符串的地方都是这么写的:

typeof str == "string"

而在1.0.4版本之前,源码是这么写的:

str.constructor == String

区别

那么,这两个关键字的区别是什么:

typeof "abc" ----> "string",

typeof new String("abc") ----> "object"

"abc".constructor ---> String

new String("abc").constructor ---> String

这也是导致上面例子出现那样效果的原因。而在1.0.4版本之后,一直使用的是typeof,至于为什么要把string primities 和 string object区别对待,这个问题我还没有搞懂。

不过找到一些string primities 和 string object的不同。

上面typeof的结果是一种不同,

eval的使用:

代码语言:javascript
代码运行次数:0
运行
复制
s1 = "2 + 2";    // creates a string primitive
s2 = new String("2 + 2");// creates a String object
console.log(eval(s1)); // returns the number 4
console.log(eval(s2)); // returns the string "2 + 2"

互相转换

当然,String object 还是能转化成 string primities的

代码语言:javascript
代码运行次数:0
运行
复制
console.log(eval(s2.valueOf())); // returns the number 4

所以,在使用jQuery的字符串时,一定要注意使用String primitive,也就是字符串字面量。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-09-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 jQuery每日经典 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档