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; }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!