Quelqu'un peut-il expliquer :
Pourquoi _extend apparaît deux fois ? Que signifient-ils ? Cela signifie-t-il que la méthode par défaut est appelée ? ?
La première fois, c'est Base.prototype._extend
.
Surtout la deuxième fois, que représentent la destination et la source ?
_extend = function self(destination, source) {
......
}
Voici la partie du code qui m'a dérouté :
define(function(){
var Base = function(){};
Base.prototype._extend = function(dest, src){
var _complete,
_extend,
_isObject;
_isObject = function(o){
return (Object.prototype.toString.call(o) === '[object Object]' || Object.prototype.toString.call(o) === '[object Array]');
},
_extend = function self(destination, source) {
var property;
for (property in destination) {
if (destination.hasOwnProperty(property)) {
if (_isObject(destination[property]) && _isObject(source[property])) {
self(destination[property], source[property]);
};
if (source.hasOwnProperty(property)) {
continue;
} else {
source[property] = destination[property];
}
}
}
}
//省略部分代码...
}})
_extend Le premier est la déclaration de variable et le second est l'affectation de variable.
La fonction consiste à parcourir la variable de destination et à copier ses attributs internes vers la source. Si l'attribut existe déjà sur la source, il ne sera pas copié.