为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript字符串不是对象吗?

Javascript字符串不是对象吗?

人到中年有点甜 2019-12-11 14:09:39
我真的在问,这不是开玩笑的设置。Douglas Crockford喜欢说在javascript原型面向对象语言中不需要new。他解释说,new添加这些代码只是为了使来自基于类(即“ 经典 ”)的面向对象的编程语言的人们有所舒适:JavaScript中,我们很难new雅JavaScript是一种原型语言,但是它有一个new运算符,试图使它看起来像古典语言。这往往会使程序员感到困惑,从而导致一些有问题的编程模式。您无需new Object()在JavaScript中使用。请改用对象文字{}。好的:new 坏{} 好但随后评论员维托·德·阿劳霍(VítorDeAraújo)指出两者并不相同。他举了一个例子,显示a string不像是object:字符串对象和字符串值不是同一件事:js> p = "Foo"Foojs> p.weight = 4242js> p.weight // Returns undefinedjs> q = new String("Foo")Foojs> q.weight = 4242js> q.weight42字符串值不能具有新属性。同样的事情对于其他类型也有效。这里string不是an发生了object什么?我会将javascript与其他所有语言混为一谈吗?
查看完整描述

3 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

字符串和对象之间最重要的区别是,对象必须遵循以下规则进行==操作:


仅当操作数引用相同的对象时,比较对象的表达式才为true。


因此,尽管字符串具有==比较值的便利,但是在使任何其他不可变对象类型表现得像值类型时,您还是很不走运。(也可能存在其他差异,但这是每天引起JavaScript开发人员兴奋的唯一差异)。例子:


"hello" == "hello"

-> true

new String("hello") == new String("hello") // beware!

-> false



查看完整回答
反对 回复 2019-12-14
?
函数式编程

TA贡献1807条经验 获得超9个赞

我想强调一点,当使用对象方法来获取原始值时,变量仅会临时转换为对象,并且在提出操作之后,该对象会转换回原始值。正如您在字符串对象与文字中所看到的那样,此概念可能会引起混淆-修改原型? 

查看完整回答
反对 回复 2019-12-14
  • 3 回答
  • 0 关注
  • 220 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号