2012-03-31 83 views
4

可能重复:
What is the 'new' keyword in JavaScript?
creating objects from JS closure: should i use the “new” keyword?`f()`和`new f()`有什么区别?

看到这个代码:

function friend(name) { 
    return { name: name }; 
} 

var f1 = friend('aa'); 
var f2 = new friend('aa'); 

alert(f1.name); // -> 'aa' 
alert(f2.name); // -> 'aa' 

什么f1f2之间的区别?

+1

一个具有“新”字在它前面的:-)一种是只是一个普通的功能,另一个是的东西,通常对象的新实例,只是一切都在JS对象。 – adeneo 2012-03-31 02:34:37

+0

我认为这是非常雄辩的问题在比较其他重复。 – 2017-11-16 03:52:12

回答

4

在你的情况下新的是不是有用的。 只有当函数使用'this'关键字时,您才需要使用new关键字。

function f(){ 
    this.a; 
} 
// new is required. 
var x = new f(); 

function f(){ 
    return { 
     a:1 
    } 
} 
// new is not required. 
var y = f(); 
+0

谢谢你的例子,我现在明白了:) – Freewind 2012-03-31 02:48:20

+0

位接近回答,但仍然需要一个透彻的解释我猜。 – 2017-11-16 03:53:17

相关问题