1

你能解释一下下面的代码吗?它在我的浏览器控制台中工作。那么这是如何工作的呢?new 关键字根本不会创建新实例,或者它是怎么回事?

 var myObject = new Object(); // Produces an Object() object.
    myObject['0'] = 'f';
    myObject['1'] = 'o';
    myObject['2'] = 'o';
    console.log(myObject); // Logs Object { 0="f", 1="o", 2="o"}

    var myString = new String('foo'); // Produces a String() object.
    console.log(myString); // Logs foo { 0="f", 1="o", 2="o"

请解释。

4

2 回答 2

1

如果它是一个新实例,它如何将 myObject 的值携带到 myString 变量上

它没有。您正在使用字符串文字初始化您的 String 对象:

new String('foo'); 

foo您分配给对象的三个属性的字符完全不同。为了比较,将第二个 foo 替换为 bar

于 2012-07-18T08:45:46.113 回答
0

这是完全正常的行为:

new String创建一个Object,如果您键入"var myString = new String('moo')",您将获得另一个具有不同值的对象。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/#se‌​ction_7

于 2012-07-18T08:45:15.420 回答