javascript - 创建字符串对象有什么区别

标签 javascript

<分区>

这样创建字符串对象有什么区别

var txt = new String("Hello World");

还有这个

var txt = "Heloo World";

最佳答案

首先让我们打破一些神话。字符串文字不是语法糖。

> var txt = new String("Hello World");
> typeof x
"string"
> var txt2 = "Hello World";
> typeof txt2
"object"

如您所见,这两个东西属于不同的类型。甚至更多:其中一个是对象,第二个不是。这会产生实际后果,例如:

> new String("Hello World") == new String("Hello World")
false
> "Hello World" == "Hello World"
true

另一个区别是基元是按值传递的,而对象是按引用传递的。如果您传递大量大字符串,这可能会节省一些内存。然而,对象和文字都是不可变的,所以这真的没什么大不了的(如果你不打算修改它们,为什么要传递很多大字符串?)。

您还可以将属性添加到对象,但不能将它们添加到原始类型。但这不是 100% 正确的。您可以将属性添加到基元的原型(prototype)。请注意,文字和对象都具有相同的原型(prototype):

> String.prototype.test = 11;
> var x = new String("x");
> x.test;
11
> var y = "x":
> y.test;
11

关于javascript - 创建字符串对象有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21747838/

相关文章:

javascript - Angular——允许用户输入 CSS 来动态生成模板

javascript - OL3,基于像素的缩放,矢量叠加错误偏移

javascript - 在 JavaScript 中使用本地文件作为数据源

javascript - 如何改变javascript中全局变量的值?

javascript - RegisterStartupScript 不再在 asp.net 中工作

c# - 如何在网站中实现移动内容/文本。在 asp.net 中

javascript - 将 JSON 转换为 HTML

javascript - Highcharts - 具有通用代码和唯一数据和标题的全局配置

javascript - getImageData 导致 "Uncaught Error: NOT_SUPPORTED_ERR: DOM Exception 9"

javascript - d3 v4 中的二维画笔