Jaka jest różnica między używaniem Object.create () a używaniem operatora przypisania?
Oto kilka przykładów.
// case 1:
var obj1 = {msg : 'Hello'};
var obj2 = obj1;
obj2.msg = "Hi!"; //overwrites
alert(obj1.msg); //=>'Hi!'
// case 2:
var obj1 = {msg : 'Hello'};
var obj2 = Object.create(obj1);
obj2.msg = "Hi!"; //does not overwrite
alert(obj1.msg); //=>'Hello'
// case 3:
var obj1 = {data: { msg : 'Hello'}}
var obj2 = Object.create(obj1);
obj2.data.msg = "Hi!"; //overwrites, Why?
alert(obj1.data.msg); //=>'Hi!'
MyślęObject.create()
po prostu daje obu markom oba punkty do tego samego prototypu, podczas gdy przypisanie sprawia, że oba obiekty wskazują tę samą lokalizację (nie tylko prototyp).Ale dlaczego obiekt danych jest nadpisywany w przypadku 3?