我希望以下代码能够正常运行 - 我想要一个没有递归的克隆。
它没有...
为什么,我该怎么做才能解决它?
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()
答案 0 :(得分:3)
Javascript中的new
运算符应用于函数,以创建一个新对象,其中原型链应用于新对象。您无法直接将其应用于对象。
如果你想在javascript中克隆一个对象,这不是一个简单的过程。您可以查看此答案以获取可能性列表:How do I correctly clone a JavaScript object?。最简单的方法是使用jQuery和$ .extend。但您也可以编写一个通用的Javascript解决方案。如果您只想将它用于特定类型的对象,则可能相当简单。
如果要正确使用new,可以创建像这样的构造函数
var Person = function() {
this.firstname = "John";
};
var person1 = new Person();
var person2 = new Person();
这将创建2个新的Person
个对象,彼此独立。
答案 1 :(得分:1)
var Person = function() {
this.firstname = 'John';
};
person2 = new Person();
抛出的错误为您提供了有价值的信息(在JavaScript中很少见) - 在将函数应用于函数时,您只能使用new运算符,而不是任何其他对象。