2014-11-22 46 views
-1

什么区别有在JavaScript差别新的Foo(

function createFoo(){ 
    var _foo = { id: 1 }; 
    return _foo; 
} 
var foo = createFoo(); 

function Foo(){ 
    this.id = 1; 
} 
var foo2 = new Foo(); 
+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new – thgaskell 2014-11-22 00:41:47

+0

[JavaScript中有什么'new'关键字?](http:// stackoverflow .COM /问题/ 1646698 /什么 - 是最新的关键字在JavaScript的) – Mathletics 2014-11-22 00:51:59

回答

1

创建对象运行的代码通过以下两种方式之间在镀铬控制台给我们更多的信息2变量的内容:

> foo 
Object {id: 1} 
> foo2 
Foo {id: 1} 

所以有一个区别。 扰流警报!答案就在原型链:

> foo.__proto__ 
Object {} 
> foo2.__proto__ 
Foo {} 

如果您需要更多的细节,请参见本伟大的职位:https://stackoverflow.com/a/3658673/2523414

0

中有实例被创建并从这些函数访问的对象的方式很多型动物。例如:

function createFoo(){ 
    var _foo = { id: 1 }; 
    return _foo; 
} 
var foo = createFoo(); 

如果你想获得id财产的价值,你必须遍历在Foo对象的属性,如:

for(var prop in foo){ 
    //if you want to set new value then 
    foo[prop] = 5; 
    //then getting value is like this 
    console.log(foo[prop]); 
} 

在你的第二个例子是在方式不同获得/设定值:

function Foo(){ 
    this.id = 1; 
} 
var foo2 = new Foo(); 
foo2.id = 2;//set new value 
console.log(foo2.id); 

这就是我能想到的。

相关问题