AngularJS-Erweiterungsverwendung
angle.extend: Kopieren Sie die Eigenschaften der ersten Ebene des zweiten Parameters und nachfolgender Parameter (unabhängig davon, ob es sich um einfache Eigenschaften oder Objekte handelt) und weisen Sie sie den Eigenschaften der ersten Ebene des ersten Parameters zu . Attribut, das heißt, wenn es sich um ein Objekt handelt, verweist es auf dasselbe Objekt und gibt das erste Parameterobjekt zurück.
Beispiel 1: var r = angle.extend(b, a); Kopieren Sie das Attribut der ersten Ebene von Objekt a (ob es sich um ein einfaches Attribut oder ein Objekt handelt) und weisen Sie es dem ersten zu. Ebenenattribut des Objekts b, das heißt, wenn es sich um ein Objekt handelt, verweist es auf dasselbe Objekt und gibt das Objekt b zurück
Js-Code
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));
Laufergebnisse:
Textcode
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"}}
Beispiel 2: var r = angle .extend(b, a, z); Kopieren Sie nacheinander die Attribute der ersten Ebene der Objekte a und z (unabhängig davon, ob es sich um einfache Attribute oder Objekte handelt) den Attributen der ersten Ebene von Objekt b, das heißt, wenn es sich um ein handelt Objekt, es verweist auf dasselbe Objekt und gibt das Objekt b zurück
Js-Code
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));
Laufergebnis:
Textcode
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":"经营公司"}}
Egal wie viele Beispiele es gibt, er ist nicht so einfach, direkt und genau wie der Quellcode. Der Quellcode von angle.extend lautet wie folgt:
Js-Code
/** * @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; }