Javascript 对象分配和#x27=';和Object.create()
我将深入研究javascript对象操作。 这里我的问题是Javascript 对象分配和#x27=';和Object.create(),javascript,node.js,object,Javascript,Node.js,Object,我将深入研究javascript对象操作。 这里我的问题是const me=Object.create(person)和和const me=person在这里,这两个操作都提供了更精简的输出。我的意思是它将对象引用到新变量me const person={ 伊什曼:错, printIntroduction:function(){ log(`我的名字是${this.name}。我是人类吗?${this.isHuman}`); } }; const me=Object.create(person)
const me=Object.create(person)和代码>和const me=person代码>在这里,这两个操作都提供了更精简的输出。我的意思是它将对象引用到新变量me
const person={
伊什曼:错,
printIntroduction:function(){
log(`我的名字是${this.name}。我是人类吗?${this.isHuman}`);
}
};
const me=Object.create(person);
me.name='Matthew';
me.isHuman=真实;
me.printIntroduction();
const me2=人;
me.name='Manan';
我是非人类=虚假;
me.printIntroduction()
记住,person
是对对象的引用。执行Object.create()
操作时,您正在从现有对象创建一个新对象(即新引用)。此新对象将原始对象作为原型。您可以将此新引用指定给me
,并且可以在不更改原始person
对象的情况下对其进行修改
另一方面,me2=person
,将对person
对象的引用分配给me2
。这意味着me2
和person
都指向同一个对象,更改一个对象将更改另一个对象。当您将对象传递给函数时,可以看到这一点
简而言之,Object.create()
应该在您想要创建一个新对象时使用,赋值应该在您想要从一个新变量引用一个现有对象时使用。第一个区别是,当您使用常规赋值时,两个变量都指向同一个对象,当您编辑一个时,您编辑另一个。创建时不会发生这种情况
const a={};
常数b=a;
b、 do=100;
控制台日志(a);
const c=Object.create(a);
c、 渡渡鸟=100;
console.log(a)
create()方法使用现有的
对象作为新创建对象的原型
你的意思是当你在做
var-person={
伊什曼:错,
printIntroduction:function(){
log(`我的名字是${this.name}。我是人类吗?${this.isHuman}`);
}
};
const me=Object.create(person);
console.log('isHuman是自己的属性obj me:'+me.hasOwnProperty('isHuman'))
me.name='Matthew';
me.isHuman=真实;
me.printIntroduction();
调试器
const me2=人;
console.log('isHuman是自己的属性obj me2:'+me2.hasOwnProperty('isHuman'))
me2.name='Manan';
me2.isHuman=假;
me2.printIntroduction()代码>如果您打印出个人。你会知道答案的diference@user3562932你们能简单地告诉我它会有什么不同吗?i thing Object.create(person)i创建新对象而不是指定对象的引用?是吗?请参阅文档。特别是,提供的对象用作原型链:“object.create()方法创建一个新对象,使用现有对象作为新创建对象的原型[链]。”在这两种情况下,都会指定一个对象(新的或其他)。object.create不会“复制”一个对象。Object.create()并不是简单的复制,它使用原始对象作为复制对象来创建一个新对象prototype@QurakNerd是的,这是一个糟糕的简化。在最初的评论之后,我调整了我的答案,删除了任何表示“复制”效果的语言。谢谢,是的,你看到了,对不起,我没看到。我
const me = Object.create(person);
// you are actually doing
me={}
me.__proto__=person