javascript - Opera 和 Firefox 给了我不同的上下文

标签 javascript

我得到了这个代码:

var config = {};
config.knock = {
    self:null,
    init : function(){
       self = this;
       console.log(self)
    }
};

$(document).ready( function(){
     config.knock.init();
});

Firefox (8) 告诉我 self 是 config.knock 对象,但 Opera (11.00) 告诉我它的 Window 对象。谁是正确的?

最佳答案

self [MDN]window对象的一个​​属性。 Opera 似乎不允许覆盖它。

由于您没有使用 var 声明变量,因此

self = this;

相同
window.self = this;

就你的情况而言。

您需要 var self,或者,如果您想引用 config.knock.self,则需要 config.knock.selfthis.self

在 Firefox 和 Opera 中,this 将引用 config.knock

关于javascript - Opera 和 Firefox 给了我不同的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8532506/

相关文章:

javascript - 如何将新的 HTML 添加到动态创建的弹出窗口 (Bootstrap 3)

javascript - JS 在我的网站上嵌入 gfycat

javascript - 如果内容是 PAGE,SAP UI5 Popover 无法正确显示内容

javascript - 使用 ID/Class 创建通用 keydown 函数

javascript - 我无法使用 jQuery 更改工具提示 Bootstrap 位置

javascript - 使用参数创建动画队列

php - 如何在模态窗口中显示内容?

javascript - 在运行时修改 DataTables TableTools 默认的 PDF 导出文件名

javascript - 根据用户选择问题实时更新

javascript - 如果字符串很奇怪,我该如何粘贴字符串并将其分配给 javascript 变量?