2012-07-18 71 views
1

你能解释下面的一段代码吗?它在我的浏览器控制台中工作。那么这是如何工作的?新的关键字根本不会创建新的实例,或者它是如何创建的?Javascript新的关键字 - 代码的说明请求

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" 

请说明。

+0

是什么让你认为新的关键字不会创建一个新的实例? – Quentin 2012-07-18 08:40:57

+1

@Quentin我不认为他认为新的关键字不会创建新的实例;他不知道它做了什么,并将其作为可能的解释提供。 – funkybro 2012-07-18 08:41:52

+0

@Quentin - 我不认为新的关键字不会像funkybro说的那样创建一个新的实例。如果它的新实例如何将myObject的值传递给myString变量。有点困惑。 – Futur 2012-07-18 08:44:42

回答

1

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

事实并非如此。您正在使用一个字符串初始化的String对象:

new String('foo'); 

是一个完全不同的给你分配给对象的三个属性的字符。作为比较,replace the second foo with bar

+0

你说得对,所以它意味着String对象存储了以数组类型分配的值..所以这就是为什么myString [0] ==='f'; myString [1] ==='o'; myString [2] ==='o'..我的假设是否正确? – Futur 2012-07-18 08:53:20

+1

是的,没错。 – Quentin 2012-07-18 09:05:19

0

这是完全正常的行为:

new String创建一个Object,如果你键入"var myString = new String('moo')",你会得到不同的值的另一个对象。

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

+0

我刚刚通过页面。无法找到上述情况的解释。你能帮忙找到吗?? – Futur 2012-07-18 08:49:31

+0

[https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/#section_7](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/#section_7) ** new String **创建**一个Object **,如果您要键入“var myString = new String('moo')”,您将获得具有不同值的另一个对象。 – mdziekon 2012-07-18 08:51:31