首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当分配给新变量时,console.log会崩溃?

当分配给新变量时,console.log会崩溃?
EN

Stack Overflow用户
提问于 2014-02-27 22:09:57
回答 2查看 110关注 0票数 4

因此,这在firefox和opera中是可行的,但在chrome或IE中则不然。

代码语言:javascript
运行
复制
        window.onload=function(){

            IMS=new Object();
            IMS.putLog=console.log;


            IMS.putLog('IMS Initialized...');

            IMS.putLog('Loading...');
            loadData(userName, passWord);
            IMS.putLog('Loaded...');
        };

不合法调用失败

不知道为什么?有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-27 22:14:26

原因是当您调用IMS.putLog时,函数的this变量是IMSconsole.log实现可能依赖于thisconsole

这里有一个解决办法:

代码语言:javascript
运行
复制
IMS.putLog = console.log.bind(console);

这将确保在调用日志函数时thisconsole

不幸的是,这不适用于IE < 9,或者其他浏览器。我知道bind不适用于PhantomJS,如果这很重要的话。

票数 2
EN

Stack Overflow用户

发布于 2014-02-27 22:15:37

参见:"Uncaught TypeError: Illegal invocation" in Chrome

基本上,当您重新分配console.log时,它会更改范围。我猜它在火狐和Opera中很管用,只是运气好。

更好的解决办法是:

代码语言:javascript
运行
复制
IMS.putLog = function(){
   console.log.apply(console, arguments); //any passed to IMS.putLog will get passed to console.log
};

同样的结果,只是在正确的范围内调用。

编辑:这应该适用于所有支持console.log Edit2: Brainfart -参数的浏览器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22081618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档