0

我有点期待下面的代码能够工作——我想要一个非递归的克隆。

它没有...

为什么,我能做些什么来绕过它?

person=new Object();
person.firstname="John";
person2 = new person; //Expected a new person object with firstname john    

"TypeError: object is not a function"

和同样的

person2 = new person()
4

2 回答 2

3

Javascript 中的new运算符应用于函数以创建新对象,并将该函数原型链应用于新对象。您不能将其直接应用于对象。

如果你想在 javascript 中克隆一个对象,这不是一个简单的过程。您可以查看此答案以获取可能性列表:如何正确克隆 JavaScript 对象?. 最简单的方法是使用 jQuery 和 $.extend。但是您也可以编写一个通用的 Javascript 解决方案。如果您只想将它​​用于特定类型的对象,它可能相当简单。

如果你想正确使用 new ,你可以像这样创建一个构造函数

var Person = function() {
 this.firstname = "John";
};
var person1 = new Person();
var person2 = new Person();

这将创建 2Person个彼此独立的新对象。

于 2013-03-10T21:56:29.647 回答
1
var Person = function() {
 this.firstname = 'John';
};

person2 = new Person();

抛出的错误为您提供了有价值的信息(这在 JavaScript 中肯定很少见)——您只能在将 new 运算符应用于函数时使用它,而不是任何其他对象。

于 2013-03-10T21:56:38.063 回答