學習JS權威指南記錄
阿新 • • 發佈:2019-02-06
針對IE bug做的補丁
var extend=(function(){
//處理IE bug 即如果o的屬性擁有一個不可列舉的同名屬性,那麼for/in迴圈不會列舉物件o可列舉的屬性
return function extend(o){
for (var i=0;i<arguments.length;i++){
var source=arguments[i];
for(var prop in source)o[prop]=source[prop];
}
return o;
};
}
return function patched_extend(o){
for (var i=0;i<arguments.length;i++){
var source=arguments[i];
for(var prop in source)o[prop]=source[prop];
for(var j=0;j<protoprops.length;j++){
prop=protoprops[j];
if(source.hasOwnProperty(prop))o[prop]=source[prop];
}
}
return o;
};
var protoprops=["toString","valueOf","constructor","hasOwnProperty","isPrototypeOf","propertIsEnumerable","toLocalString"];//需要檢查的特殊屬性
}());
var _=0;
自定義函式的屬性
JS中函式不是原始值 而是一個特殊物件,也就是說函式可以擁有屬性
function factorial(n){
if(isFinite(n)&&n>0&&n==Math.round(n)){
if(!(n in factorial))
factorial[n]=n*factorial(n-1);
return factorial[n];
}
factorial[1]=1;
};
函式宣告 function XXX(/*引數*/) { /* 函式體*/}; 函式定義表示式 var XXXX = function(/*引數*/){/*函式體*/};
var a=[function(x){return x*x;},20]; //函式直接量
a[0](a[1]); //=>400