哪位大神可以解释下:
_extend为什么出现了2次,他们分别代表什么意思,是默认调用方法的意思吗??
第1次是Base.prototype._extend
。
尤其是第2次的,其中的destination和source代表的是啥?
_extend = function self(destination, source) {
......
}
下面是引起我困惑的代码部分:
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];
}
}
}
}
//省略部分代码...
}})
怪我咯2017-05-18 11:03:02
_extend第一个是变量声明,第二个是变量赋值。
作用就是 遍历destination变量,并将它内部的属性复制到source上,如果source上已经存在该属性则不复制。