我创建了一个新的全局对象,然后将所有内容放入该新对象中,这样它就不会干扰其他任何人做的事情.在调用document.ready()函数之后,由于未知原因,这会被移动到window.bf.我把它简化为一个简单的例子.任何人对正在发生的事情都有任何想法?
<html>
<head>
<title>Test</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
debugger;
var bf = {}; // Namespace
bf.vars = [];
bf.vars['onclick'] = "";
$(document).ready(function() {
bf.noop = function() {}
bf.noop();
window.bf.noop();
});
</script>
</head>
<body>Test</body>
</html>Run Code Online (Sandbox Code Playgroud)
所以我结束了两个"男朋友".一个是原始全局对象,第二个是window.bf对象.我的问题是:最初,全局对象中包含所有函数和变量.现在全局变量除了bf.vars(一个数组)之外什么都没有.其他所有内容现在都在window.bf对象中(包括应该进入全局bf.vars数组的所有内容,但我从未要求这样做.)
直到上周五(2015年9月25日),这都没有发生.现在确实如此.
更新:我刚刚尝试删除document.ready()函数.如果删除document.ready()部分 - 则全局bf对象将返回为全局变量.所以这似乎与jQuery本身有关.
在有人问之前:使用document.ready()的原因是因为我定义的一些函数引用了需要加载的位置,jQuery说要使用document.ready()函数来确保所有元素在执行开始之前已加载.bf.noop()函数只是给出一个函数的例子,并显示该函数不再显示在全局bf对象中.
使用document.ready()进行屏幕截图:
没有document.ready()的屏幕截图:
更好?