javascript - 新手:关于函数对象

查看:102
本文介绍了javascript - 新手:关于函数对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

这样写是对的

var byteArrayUntil=(function(){
   getUseData=function(data,offset){
        var arr=[];
        for(var i=0;i<=799;i++){
            arr.push(i);
        }
        return arr;
    }
   getUseJson=function(data,offset){
        var arr=[];
        for(var i=0;i<=500;i++){
            arr.push(i);
        }
        return {'hz':arr};
    }
return this;
})();
console.log(byteArrayUntil.getUseJson());
但是这样:
    var byteArrayUntil=(function(){
   this.getUseData=function(data,offset){
        var arr=[];
        for(var i=0;i<=799;i++){
            arr.push(i);
        }
        return arr;
    }
   this.getUseJson=function(data,offset){
        var arr=[];
        for(var i=0;i<=500;i++){
            arr.push(i);
        }
        return {'hz':arr};
    }

})();
console.log(byteArrayUntil.getUseJson);
这是为什么呢?

解决方案

var byteArrayUntil=(function(){
   getUseData=function(data,offset){   //敲黑板!!!划重点!面试必考题! 声明变量不写var,就等于 window.getUseData
        var arr=[];
        for(var i=0;i<=799;i++){
            arr.push(i);
        }
        return arr;
    }
   getUseJson=function(data,offset){
        var arr=[];
        for(var i=0;i<=500;i++){
            arr.push(i);
        }
        return {'hz':arr};
    }
return this; //这里this是什么呢?是运行的上下文,这是个立即执行函数,是谁执行了它捏?是window,所以这里的this就是window 对象,辣么var byteArrayUntil = 这个return的this,辣么,byteArrayUntil 就指向了window。
})();
console.log(byteArrayUntil.getUseJson()); // 所以,byteArrayUntil.getUseJson() 就等于 window.getUseJson()

同样道理,下面那个报错的代码块
this依然等于window,this.getUseJson就等于window.getUseJson和上一题一样
但是,byteArrayUntil在这里啥都不是啊。。因为立即执行函数木有return,它就是个undefined。
so,undefined.getUseJson()必然报错了。

这篇关于javascript - 新手:关于函数对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆