我创建了一个简单的对象
var myobject={
sum:function(){
console.log('sum')
},
sub:function(){
console.log('sub')
}
}
然后我从上面的对象创建了新对象,例如:-
var newmyobject=new Object(myobject);
最后,我向新对象添加了一个属性,例如:-
newmyobject.mult=function(){
console.log('multi');
}
现在的问题是当我这样做的时候
console.log(myobject);
console.log(newmyobject);
两者都显示相同的结果。我原以为“mult()”应该只在 newmyobject 中。
最佳答案
new Object(obj)
不会创建副本,它只是将 obj
作为对象返回,并且它已经是一个对象。你可以这样做:
var newmyobject = Object.create(myobject)
newmyobject.mult = function() {
console.log('multi');
}
myobject.isPrototypeOf(newmyobject) // true
现在 newmyobject
将从 myobject
继承 sub
和 sum
,以及 mult
将是自己的属性(property)。
new
用于构造函数,例如:
function MyObject() {}
MyObject.prototype.sum = function(){}
MyObject.prototype.sub = function(){}
var obj = new MyObject
obj.mult = function(){}
obj instanceof MyObject // true
关于javascript - 简单的 javascript 'new' 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29226618/