具有angularjs的引用对象

时间:2015-12-31 11:29:35

标签: javascript angularjs

我有一些麻烦来理解复制的内容和javascript中引用的内容。我清楚的是,当一个对象是一个对象时会被引用,当一个对象是一个变量时会被复制:

var reference = myObject    // myObject = {string:'text'} -> referenced
var copy = myVar            // myVar = 'text' -> copied

现在如果我想创建一个对象/ var?

的对象怎么办?
var newObject = {anObject: myObject, aVar: myVar}

他们会被复制或引用吗?如果它们被复制,有没有办法让它们被引用(至少是对象:myObject)?

编辑(Angularjs特定):我想确保AngularJS和$ rootScope变量的所有答案都是正确的(尽管我猜行为应该相同)

2 个答案:

答案 0 :(得分:1)

Objects are Passed by Reference In JavaScript

  

对象引用是   值。因此,对象的行为就像它们传递的一样   reference:如果函数更改了对象属性,则会更改   原始价值。对象属性的更改是可见的(反映)   在功能之外。

如果将对象分配给另一个对象的属性,它仍然通过引用分配。当你更改新的对象值时,它反映在base。

例如:

var myObj = {
  a: 1
}

var testObj = {
   ref: myObj
}

console.log(myObj.a); //1

//change the value from second object
testObj.ref.a = "new val";

console.log(myObj.a); //new val

答案 1 :(得分:1)

复制原始值并引用非原始值(如对象和数组)。 我认为" myObject"将被引用,myVar将被复制。要获取myObject的副本,您可以克隆它并将其分配给另一个变量。

使用JQuery:

{
  anObject: $.extend({},myObject), 
  aVar: myVar
}