AngularJS extend用法详解及实例代码
AngularJSextend用法
angular.extend:依次将第二个参数及后续的参数的第一层属性(不管是简单属性还是对象)拷贝赋给第一个参数的第一层属性,即如果是对象,则是引用的是同一个对象,并返回第一个参数对象。
实例一:varr=angular.extend(b,a);将对象a的第一层属性(不管是简单属性还是对象)拷贝赋给对象b的第一层属性,即如果是对象,则是引用的是同一个对象,并返回对象b
Js代码
vara={
name:'bijian',
address:'shenzhen',
family:{
num:6,
amount:'80W'
}
};
varb={};
varr=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"}}
实例二:varr=angular.extend(b,a,z);相继将对象a、z的第一层属性(不管是简单属性还是对象)拷贝赋给对象b的第一层属性,即如果是对象,则是引用的是同一个对象,并返回对象b
Js代码
vara={
name:'bijian',
address:'shenzhen',
family:{
num:6,
amount:'80W'
}
};
varz={
family:{
amount:'150W',
mainSource:'经营公司'
}
};
varb={};
varr=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代码
/**
*@ngdocfunction
*@nameangular.extend
*@function
*
*@description
*Extendsthedestinationobject`dst`bycopyingallofthepropertiesfromthe`src`object(s)
*to`dst`.Youcanspecifymultiple`src`objects.
*
*@param{Object}dstDestinationobject.
*@param{...Object}srcSourceobject(s).
*@returns{Object}Referenceto`dst`.
*/
functionextend(dst){
varh=dst.$$hashKey;
forEach(arguments,function(obj){
if(obj!==dst){
forEach(obj,function(value,key){
dst[key]=value;
});
}
});
setHashKey(dst,h);
returndst;
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!