day10.this

  1. this

    1. 函数预编译过程this—> window
    2. 全局作用域里this —> window
    3. call/apply可以改变函数运行时this指向
    4. obj.fun.c(); func()里面的this指向obj
  2. arguments.callee:函数引用

    var num =( function (n) {
        if(n == 1) {
        return 1;
        }
        return n * arguments.callee(n - 1);
    }(100))
    
    

    arguments只有callee和length两个属性

  3. func.caller:函数自己的属性,表示被调用的那个环境

  4. 克隆

    浅层拷贝:值拷贝
    function clone(origin, target) {
                var target = target || {}; 
                for (var prop in origin) {
                    target[prop] = origin[prop];
                }
                return target;
            }
    
    深层拷贝:引用拷贝
    <script>
            /*浅层拷贝:值拷贝,深层拷贝:引用拷贝,两个拷贝对象之间的引用的值不会随着一个的改变而另一个发生改变*/
    
            /*算法步骤:
            1、判断是原始值还是引用值   typeof 是object的话是引用值(null除外)-->原始值直接 值赋值
            2、引用值判断是数组还是对象 
            3、建立新数组或者对象 instanceof object toString object
            4、再次把引用值当做target,递归调用自身*/
    
    
            var obj = {//origin
                name: 'abc',
                age: 122,
                card: ['visa', 'master'],
                wife: {
                    name:'xiaozhang',
                    son: {
                        name: "aaa"
                    }
                }
    
            }
            var obj1 = {};//target
            function deepClone(origin, target){
                var target = target || {},//避免target没传入的时候,系统生成一个对象
                    tostring = Object.prototype.toString,//用toString来区别引用值是对象还是数组
                    arrStr = "[object Array]";//用来比对tostring返回的字符串是不是数组
                for(var prop in origin){
                    if(origin[prop] !== 'null' && origin.hasOwnProperty(prop)){
                        if(typeof(origin[prop])=='object'){
                            // if(tostring.call(origin[prop])==arrStr){
                            //     target[prop] = [];
                            // }else{
                            //     target[prop] = {};
                            // }
                            target[prop] = tostring.call(origin[prop])==arrStr ? [] : {};
                            deepClone(origin[prop],target[prop]);
                        }
                        else{
                            target[prop] = origin[prop];
                        }
                    }
                }
                return target;
            }
        </script>
    
  5. 字符串比较诸位比较ASCII码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值