我是Javascript的新手,现在正在研究它......
var person = function() {
this.name = "name"
};
var person2 = function() {
var obj = {};
obj.name = "name";
return obj;
};
假设我们有两个上面显示的函数。似乎可以使用任一函数创建对象。例如)
var p = new person();
var p2 = new person2();
我的问题是:人与人之间有什么区别?它们完全一样吗?如果不是哪一种更优选的使用方式?
由于
答案 0 :(得分:2)
创建对象的常规方法是第一种方式。
第二种方法将创建两个对象,其中一个将被丢弃。在调用函数之前将创建一个对象,就像第一个方法一样,但是因为函数返回另一个对象,所以将丢弃第一个对象,而是使用返回的对象。
方法之间的一个重要区别是第二个方法不能使用原型。放在函数原型中的任何内容都将应用于最终被丢弃的对象。
答案 1 :(得分:1)
区别在于您使用这些功能的方式。
第一个用作构造函数,this
被设置为新创建的对象。它旨在与运算符new
结合使用,如下所示:
var bill = new person();
这就像典型的OOP语言中的普通构造函数一样。
第二个用作普通函数(不含new
),例如:
var bill = person();
您可以将这种对象创建方式与builder pattern结合使用。