[英]JavaScript and String as primitive value
在JavaScript中,String是原始值。 但也是一个String对象......原始值是直接放入变量的值。
所以我的问题是:
var d = "foo";
d直接包含foo或对其他语言的字符串对象的引用?
谢谢。
如果我理解正确, d
将包含字符串文字“foo”,而不是对象的引用。 但是,JavaScript引擎会在必要时将文字有效地转换为String
的实例,这就是为什么你可以在字符串文字上调用String.prototype
方法:
"some string".toUpperCase(); //Method of String.prototype
来自MDN的以下片段可能有助于进一步解释(重点补充):
字符串文字 (用双引号或单引号表示)和从非构造函数上下文中的String调用返回的字符串(即,不使用new关键字) 是原始字符串 。 JavaScript自动转换基元和String对象,因此可以对原始字符串使用String对象方法。 在要在原始字符串上调用方法或发生属性查找的上下文中,JavaScript将自动包装字符串原语并调用方法或执行属性查找。
这在说明书中都有详细解释,但阅读起来并不容易。 我最近问了一个相关的问题 (关于为什么可以做到这一点),所以可能值得阅读(非常)详细的答案。
如果你定义
var d = "foo";
比d
直接包含foo
但是,如果你定义
var S = new String("foo");
然后S
是一个Object
例:
var s1 = "1";
var s2 = "1";
s1 == s2 -> true
var S1 = new String("2");
var S2 = new String("2");
S1 == S2 -> false
我认为Javascript中的每个变量实际上都代表一个Object。 甚至函数也是一个Object。
找到这个关于javascript变量的页面,似乎是:
javascript的原始类型是布尔值,数字和文本。
我相信Javascript中没有原语,至少在Java意义上 - 一切都是某种对象。 所以是的,它是对象的引用 - 如果你扩展String对象, d
将具有该扩展名。
如果您指的是语言提供的那些类型中的原语,那么您有一些布尔数字,字符串和日期都由语言定义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.