简单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
为您提供一个新对象,另一个对象作为原型。