学习JS权威指南记录


针对IE bug做的补丁


var extend=(function(){


//处理IE bug 即如果o的属性拥有一个不可枚举的同名属性,那么for/in循环不会枚举对象o可枚举的属性

        for (var p in {toString:null}){
        
        
            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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值