简单javascript';新';关键词
我创建了简单对象简单javascript';新';关键词,javascript,object,new-operator,Javascript,Object,New Operator,我创建了简单对象 var myobject={ sum:function(){ console.log('sum') }, sub:function(){ console.log('sub') } } 然后我从上面的对象创建了新对象,如:- var newmyobject=new Object(myobject); newmyobject.mult=function(){ console.log('multi'); } 最后,我向新对象添加了一个属性,
var myobject={
sum:function(){
console.log('sum')
},
sub:function(){
console.log('sub')
}
}
然后我从上面的对象创建了新对象,如:-
var newmyobject=new Object(myobject);
newmyobject.mult=function(){
console.log('multi');
}
最后,我向新对象添加了一个属性,如:-
var newmyobject=new Object(myobject);
newmyobject.mult=function(){
console.log('multi');
}
现在的问题是当我这么做的时候
console.log(myobject);
console.log(newmyobject);
两者都显示出相同的结果。我希望“mult()”只能在newmyobject中。新对象(obj)
不会创建副本,它只是将obj
作为对象返回,并且它已经是一个对象。你可以做:
var newmyobject = Object.create(myobject)
newmyobject.mult = function() {
console.log('multi');
}
myobject.isPrototypeOf(newmyobject) // true
现在newmyobject
将从myobject
继承sub
和sum
,并且mult
将成为自己的属性
new
用于构造函数,例如:
function MyObject() {}
MyObject.prototype.sum = function(){}
MyObject.prototype.sub = function(){}
var obj = new MyObject
obj.mult = function(){}
obj instanceof MyObject // true
对象是通过引用传递的。你必须克隆它才能添加独特的方法。@JayBhatt真的值得一提,作为答案:)@NullPoiаteаAgree。但是,
@elclanrs
已经给出了一个很好的答案。那么“new”只是提供了一个参考,但这可以通过简单的“=”操作符来实现。是的,很好,但我心里有一个疑问,“new”的用途是什么?我可以简单地使用var newmyobject=myobject来代替。new
用于构造函数,看看编辑是否有帮助newmyobject=myobject
是同一个对象,而object.create
为您提供一个新对象,另一个对象作为原型。