根据MSDN,我需要强制符合标准的模式是包含HTML 5 doctype:
http://msdn.microsoft.com/en-us/library/gg699338%28v=vs.85%29.aspx
当远程提供标记时,它可以工作.问题是当我使用相同的标记并从本地运行的apache服务器提供它时.IE9默认为怪异模式,兼容性视图按钮消失.
我在本地进行了大量的开发,如果我只能在远程服务的IE中测试我的代码,它就会失败.提前致谢.
我是闭包的初学者(以及一般的Javscript),我无法找到关于此代码中发生了什么的令人满意的解释:
function myObject(){
this.myHello = "hello";
this.myMethod = do_stuff;
}
function do_stuff(){
var myThis = this;
$.get('http://example.com', function(){
alert(this.myHello);
alert(myThis.myHello);
});
}
var obj = new myObject;
obj.myMethod();
Run Code Online (Sandbox Code Playgroud)
它会提醒'undefined'然后'hello'.显然这不应该是特定于jQuery的,但这是我能想到的最原始代码的最简单形式.闭包do_stuff()可以访问该范围内的变量,但显然此规则不适用于this关键字.
问题:
发生什么this时,闭合的范围之外传递do_stuff()(在这种情况下$.get())?是否myThis包含它的副本this或引用?this在封闭中使用通常不是一个好主意吗?
任何回应都非常赞赏.