欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

AngularJS extend用法详解及实例代码

程序员文章站 2023-11-18 14:55:16
angularjs extend用法    angular.extend:依次将第二个参数及后续的参数的第一层属性(不管是简单属性还是对象)拷贝赋给第...

angularjs extend用法

   angular.extend:依次将第二个参数及后续的参数的第一层属性(不管是简单属性还是对象)拷贝赋给第一个参数的第一层属性,即如果是对象,则是引用的是同一个对象,并返回第一个参数对象。

        实例一:var r = angular.extend(b, a);将对象a的第一层属性(不管是简单属性还是对象)拷贝赋给对象b的第一层属性,即如果是对象,则是引用的是同一个对象,并返回对象b

js代码 

var a = { 
  name : 'bijian', 
  address : 'shenzhen', 
  family : { 
    num : 6, 
    amount : '80w' 
  } 
}; 
var b = {}; 
var r = angular.extend(b, a); 
console.log('a:' + json.stringify(a)); 
console.log('b:' + json.stringify(b)); 
console.log('r:' + json.stringify(r)); 
 
b.address = 'hanzhou'; 
b.family.amount = '180w'; 
console.log('a:' + json.stringify(a)); 
console.log('b:' + json.stringify(b)); 
console.log('r:' + json.stringify(r)); 

运行结果:

text代码 

a:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"80w"}} 
b:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"80w"}} 
r:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"80w"}} 
a:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"180w"}} 
b:{"name":"bijian","address":"hanzhou","family":{"num":6,"amount":"180w"}} 
r:{"name":"bijian","address":"hanzhou","family":{"num":6,"amount":"180w"}} 

         实例二:var r = angular.extend(b, a, z);相继将对象a、z的第一层属性(不管是简单属性还是对象)拷贝赋给对象b的第一层属性,即如果是对象,则是引用的是同一个对象,并返回对象b

js代码 

var a = { 
  name : 'bijian', 
  address : 'shenzhen', 
  family : { 
    num : 6, 
    amount : '80w' 
  } 
}; 
var z = { 
  family : { 
    amount : '150w', 
    mainsource : '经营公司' 
  } 
}; 
var b = {}; 
var r = angular.extend(b, a, z); 
console.log('a:' + json.stringify(a)); 
console.log('b:' + json.stringify(b)); 
console.log('r:' + json.stringify(r)); 
 
b.address = 'hanzhou'; 
b.family.amount = '180w'; 
console.log('a:' + json.stringify(a)); 
console.log('b:' + json.stringify(b)); 
console.log('r:' + json.stringify(r)); 

运行结果:

text代码 

a:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"80w"}} 
b:{"name":"bijian","address":"shenzhen","family":{"amount":"150w","mainsource":"经营公司"}} 
r:{"name":"bijian","address":"shenzhen","family":{"amount":"150w","mainsource":"经营公司"}} 
a:{"name":"bijian","address":"shenzhen","family":{"num":6,"amount":"80w"}} 
b:{"name":"bijian","address":"hanzhou","family":{"amount":"180w","mainsource":"经营公司"}} 
r:{"name":"bijian","address":"hanzhou","family":{"amount":"180w","mainsource":"经营公司"}} 
 

        再多的实例也不如源代码来的简单、直接和准确,angular.extend源码如下:

js代码 

/** 
 * @ngdoc function 
 * @name angular.extend 
 * @function 
 * 
 * @description 
 * extends the destination object `dst` by copying all of the properties from the `src` object(s) 
 * to `dst`. you can specify multiple `src` objects. 
 * 
 * @param {object} dst destination object. 
 * @param {...object} src source object(s). 
 * @returns {object} reference to `dst`. 
 */ 
function extend(dst) { 
 var h = dst.$$hashkey; 
 foreach(arguments, function(obj){ 
  if (obj !== dst) { 
   foreach(obj, function(value, key){ 
    dst[key] = value; 
   }); 
  } 
 }); 
 
 sethashkey(dst,h); 
 return dst; 
} 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!