Bolehkah sesiapa menjelaskan:
Mengapa _extend muncul dua kali Apakah maksud kaedah lalai? ?
Kali pertama ialah Base.prototype._extend
.
Terutama kali kedua, apakah yang diwakili oleh destinasi dan sumber?
_extend = function self(destination, source) {
......
}
Berikut ialah bahagian kod yang mengelirukan saya:
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 Yang pertama ialah pengisytiharan berubah, dan yang kedua ialah penugasan berubah.
Fungsinya adalah untuk melintasi pembolehubah destinasi dan menyalin atribut dalamannya ke sumber Jika atribut itu sudah wujud pada sumber, ia tidak akan disalin.