Сорри за стоко тем но прошу обьяснить новичку
Непонятны некоторые куски кода
// копирует все свойства из src в dst,
// включая те, что в цепочке прототипов src до Object
function mixin(dst, src){
// tobj - вспомогательный объект для фильтрации свойств,
// которые есть у объекта Object и его прототипа
var tobj = {}
for(var x in src){
// копируем в dst свойства src, кроме тех, которые унаследованы от Object
if((typeof tobj[x] == "undefined") || (tobj[x] != src[x])){
dst[x] = src[x];
}
}
// В IE пользовательский метод toString отсутствует в for..in
if(document.all && !document.isOpera){
var p = src.toString;
if(typeof p == "function" && p != dst.toString && p != tobj.toString &&
p != "\nfunction toString() {\n [native code]\n}\n"){
dst.toString = src.toString;
}
}
}
А именно
if((typeof tobj[x] == "undefined") || (tobj[x] != src[x]))
То есть копируются только те свойства и методы которые имеют тип undefined. И какой смысл в них? и те которые не равны src[x]. Вот тут вообще запутался копирование же и идёт из src а tobj вообще пустой обьект.
А также
// В IE пользовательский метод toString отсутствует в for..in
if(document.all && !document.isOpera){
var p = src.toString;
if(typeof p == "function" && p != dst.toString && p != tobj.toString &&
p != "\nfunction toString() {\n [native code]\n}\n"){
dst.toString = src.toString;
}
}
Тут тоже не понятно toString вроде до этого и не использовался и вообще что этот кусок кода делает.