首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >javascript字符串类型和字符串对象之间的区别?

javascript字符串类型和字符串对象之间的区别?
EN

Stack Overflow用户
提问于 2010-01-13 03:43:59
回答 1查看 15.5K关注 0票数 65

我一直在摆弄ECMA-262标准(ECMAScript语言规范,第三版,如果对此很重要的话--我没有发现第三版和第五版在字符串类型/字符串对象上有任何区别)。

有一件事让我感到困惑: String类型和String对象之间的区别。是的,我知道不同之处在于String Type是一个16位UTF-16单元序列,而String对象是一个内置对象,其内部Class属性设置为" String“,其内部Value属性设置为String Type的值。

但是从规范中可以看出,string类型似乎并不公开任何方法;也就是说,它只是一个没有任何附加属性的值。看看这段代码,一切都和预期的完全一样:

document.writeln(typeof "foo"); // 'string'
document.writeln(typeof new String("foo")); // 'object'

第一个类型是实际的String type,第二个是Object Type (它是String类的对象,但它的数据类型是object)。然而,看看这个:

"foo".charAt(0);

fooStrObj = new String("Foo");
fooStrObj.charAt(0);

它们似乎都公开了相同的函数,但是在ECMA-262标准中定义的String类型上没有函数;它公开的所有函数都来自String.prototype对象(我看不到String类型神奇地公开了ECMA-262标准中String.prototype对象的所有属性和函数)。那么,是否将String type类型的值自动提升为String对象,并将原始String Type值作为其内部value属性?

如果它们被完全相同地对待(在所有的意图和目的中,它们似乎是相同的),为什么要有两种不同的方式来表示一个字符串

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2051833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档