javascript对象变量只是引用类型吗?

时间:2016-09-03 21:14:20

标签: javascript object

如果你有一个javascript变量是一个对象而你创建一个新变量等于第一个变量,它是创建一个新的对象实例,还是它们都引用同一个对象?

4 个答案:

答案 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这意味着两者对象实际上指向相同的引用。因此,当你改变其中任何一个时,都会改变。

Object Reference Example

答案 3 :(得分:0)

如果你的意思是这样的话

var a = { foo: "foo" };
var b = a;

然后是的。他们引用相同的对象。