Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 分配;“新号码”;在Chrome中将字段打印原型设置为{}_Javascript_Google Chrome_Console.log - Fatal编程技术网

Javascript 分配;“新号码”;在Chrome中将字段打印原型设置为{}

Javascript 分配;“新号码”;在Chrome中将字段打印原型设置为{},javascript,google-chrome,console.log,Javascript,Google Chrome,Console.log,我正在尝试下面的JavaScript示例 function A() {}; A.prototype.x = new Number(10); var a = new A(); console.log(a.x); 在Firefox中,其打印值为10,但在Chrome或Node.js中,其打印值为{} 但当改变第二行如下,然后它打印10在铬也 A.prototype.x = 10; 有人能解释一下为什么新数字(10)不能在chrome中使用。新数字(…)创建一个装箱数字实例,它与数字原语不同

我正在尝试下面的JavaScript示例

function A() {};

A.prototype.x = new Number(10);

var a = new A();

console.log(a.x);
在Firefox中,其打印值为10,但在Chrome或Node.js中,其打印值为{}

但当改变第二行如下,然后它打印10在铬也

A.prototype.x = 10;
有人能解释一下为什么新数字(10)不能在chrome中使用。

新数字(…)
创建一个装箱数字实例,它与数字原语不同。
Chrome的控制台将其显示为一个对象

如果您编写
console.log(新编号(10))
,您将看到相同的输出

如果您将代码更改为使用原语(
a.prototype.x=10
),它将显示
10

新编号(…)
创建一个装箱编号实例,该实例与编号原语不同。
Chrome的控制台将其显示为一个对象

如果您编写
console.log(新编号(10))
,您将看到相同的输出


如果您将代码更改为使用原语(
a.prototype.x=10
),它将显示
10

,因为数字是一个对象<代码>控制台.log(a.x.valueOf())或
console.log(a.x.toString())将起作用。

因为数字是一个对象<代码>控制台.log(a.x.valueOf())
console.log(a.x.toString())将起作用。

这是因为您正在生成一个数字包装对象而不是一个原语,这是Chrome选择的表示形式。(控制台表示并不总是相同的。没有标准。)

实际数字
10
存储在名为
[[PrimitiveValue]]
的内部属性中,因此它不会直接公开

要获取其
[[PrimitiveValue]]
,可以使用
.valueOf()
方法

console.log(a.x.valueOf()); // 10

新建对象的
[[Prototype]]
内部属性设置为原始数字Prototype对象,即
数字Prototype的初始值(15.7.3.1)

新构造对象的
[[Class]]
内部属性设置为
“Number”

新构造对象的
[[PrimitiveValue]]
内部属性设置为
ToNumber(value)
如果提供了值,则设置为
+0

新构造对象的
[[Extensible]]
内部属性设置为
true


这是因为你正在制作一个数字包装器对象而不是一个原语,这是Chrome选择的表示形式。(控制台表示并不总是相同的。没有标准。)

实际数字
10
存储在名为
[[PrimitiveValue]]
的内部属性中,因此它不会直接公开

要获取其
[[PrimitiveValue]]
,可以使用
.valueOf()
方法

console.log(a.x.valueOf()); // 10

新建对象的
[[Prototype]]
内部属性设置为原始数字Prototype对象,即
数字Prototype的初始值(15.7.3.1)

新构造对象的
[[Class]]
内部属性设置为
“Number”

新构造对象的
[[PrimitiveValue]]
内部属性设置为
ToNumber(value)
如果提供了值,则设置为
+0

新构造对象的
[[Extensible]]
内部属性设置为
true


console.log
再次获胜:与
console.log(“+a.x)
比较
console.log
再次获胜:与
console.log(“+a.x)
比较。