如果你有一个javascript变量是一个对象而你创建一个新变量等于第一个变量,它是创建一个新的对象实例,还是它们都引用同一个对象?
答案 0 :(得分:2)
他们总是引用同一个对象。我们可以通过尝试以下方式看到:
var x = {foo:11};
var y = x;
y.foo = 42;
console.log(x.foo);
// will print 42, not 11
答案 1 :(得分:1)
两者都将引用同一个对象。 如果要创建新实例:
var Person = function() {
this.eyes = 2,
this.hands = 2
};
var bob = new Person();
var sam = new Person();
这两个是不同的对象。
答案如下:当您创建一个对象然后将其分配给另一个对象时,它将引用同一个对象。
以下是一个例子:
var hacker = {
name : 'Mr',
lastname : 'Robot'
};
console.log(hacker.name + '.' + hacker.lastname);
// Output Mr.Robot
// This variable is reference to hackers object
var anotherPerson = hacker;
console.log(anotherPerson.name + '.' + anotherPerson.lastname);
// Output Mr.Robot
// These will change hacker object name and lastname
anotherPerson.name = 'Elliot';
anotherPerson.lastname = 'Alderson';
console.log(anotherPerson.name + ' ' + anotherPerson.lastname);
// Output "Elliot Alderson"
// After it if you try to log object hacker name and lastname it would be:
console.log(hacker.name + '.' + hacker.lastname);
// Output "Elliot Alderson"
您可以在此处查看链接并使用它。这并不复杂。 JSBIN Object Hacker
答案 2 :(得分:1)
对象参考解释了!
查看图像以便更好地理解。当你创建一个对象时,假设s1
它只在内存堆中有一个引用,现在当你创建另一个对象时说s2
并说s1 = s2
这意味着两者对象实际上指向相同的引用。因此,当你改变其中任何一个时,都会改变。
答案 3 :(得分:0)
如果你的意思是这样的话
var a = { foo: "foo" };
var b = a;
然后是的。他们引用相同的对象。