javascript - 理解 JavaScript 对象(值)

标签 javascript

我理解以下代码将一个数字包装到一个对象中:

var x = Object(5);

因此,我期望并理解以下内容:

alert(x == 5); //true
alert(x === 5); //false

但是,我也理解对象是键/值对的列表。所以我希望以下内容有所不同:

alert(JSON.stringify(5)); //5
alert(JSON.stringify(x)); //5

x 的结构是什么样的?为什么它看起来不是键/值对格式?

最佳答案

Object constructor为给定值创建一个对象包装器,其类型对应于该值。

所以你得到一个Number object将数字传递给 Object

时使用原始值 5
var x = Object(5);

和做的一模一样

var x = new Number(5);

打电话时 valueOf()在两者上,您再次获得原始值 5,这就是为什么将其字符串化与将数字 5 字符串化相同,对象在字符串化之前转换为其原始值

JSON.stringify 的规范说

Boolean, Number, and String objects are converted to the corresponding primitive values during stringification, in accord with the traditional conversion semantics.

关于javascript - 理解 JavaScript 对象(值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34581270/

相关文章:

javascript - 将内容放在列中

javascript - 使用 bootbox.dialog 加载partialview或viewcomponent

javascript - Grails 在 javascript 中的 GSP 站点中使用 grails var

javascript - SVG 元素在容器的左上角说

javascript - 可以在另一个窗口的上下文中调用 Javascript 方法吗?

javascript - javascript 中 throttle 的函数式编程等价物是什么?

javascript - 使用 requirejs 优化器优化后,Angularjs 找不到模块

javascript - .NET 的 Javascript 实现有哪些?

javascript - 如何在 Visual Studio Code 中基于主题定义 editor.selectionBackground ?

javascript - AngularJS - bootstrap - bootstrapDualListbox - 在左侧选择值时,所有值都选择/移动到右侧