哪位大神可以解釋下:
_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];
}
}
}
}
//省略部分代码...
}})
_extend第一個是變數聲明,第二個是變數賦值。
作用就是 遍歷destination變量,並將它內部的屬性複製到source上,如果source上已經存在該屬性則不複製。