Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对象分配和#x27=';和Object.create()_Javascript_Node.js_Object - Fatal编程技术网

Javascript 对象分配和#x27=';和Object.create()

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)

我将深入研究javascript对象操作。 这里我的问题是
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