var extend = (function () {
For (Var p in {Tostring:null}) {
Check whether the current browser supports Forin loops to iterate through a non-enumerable property, such as the ToString property, if the non-enumerable property (ie bug) cannot be traversed, then the Forin loop will not come in.
return function Extend (o) {
for (var i =1,len=arguments.length;i<len;i++) {
var source = Arguments[i];
For (prop in source) {
O[prop] = Source[prop];
}
}
}
}
These properties require special checks because some IE browsers do not support the for-in to traverse these properties
var protoprops = ["ToString", "ValueOf", "constructor", "hasOwnProperty", "ispropertyof", "propertyisenumerable", " Tolocalstring "];
return function Patched_extend (o) {
for (var i =1,len=arguments.length;i<len;i++) {
var source = Arguments[i];
For (prop in source) {//Traverse general properties First
O[prop] = Source[prop];
}
Check for special attributes to prevent missing
for (Var j =0,len=protoprops.length;j<len;j++) {
Prop = Protoprops[j];
if (Source.hasownproperty (prop)) {
O[prop] = Source[prop];
}
}
}
return o;
}
}());
JavaScript native method Implementation Extend