我正在尝试从我的对象中的函数中加载Google Plus API,例如:
var myObject = {
initialize : function(options) {
window.___gcfg = {
parsetags : 'explicit'
};
(function() {
var po = document.createElement('script');
po.type = 'text/javascript';
po.async = true;
po.src = 'https://apis.google.com/js/plusone.js?onload=onLoadGooglePlus';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(po, s);
})();
...
然后我将onLoadGooglePlus()定义在对象外部,作为常规全局函数。
现在,如果我执行匿名函数从MY对象中加载GAPI,则使用initialize()函数不会调用回调。在这种情况下,"这个"关键字指向MY对象。
但是,如果我执行以下操作(这使得"此"关键字指向" Window"),它可以工作:
initialize : function(options) {
window.___gcfg = {
parsetags : 'explicit'
};
setTimeout(function() {
(function() {
var po = document.createElement('script');
po.type = 'text/javascript';
po.async = true;
po.src = 'https://apis.google.com/js/plusone.js?onload=onLoadGooglePlus';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(po, s);
})();
}, 0);
...
我真的很困惑,这是否与"这"关键字可以吗?因为从Firefox的控制台调用我的函数myObject.initialize()使它工作(我的" onload"回调被执行),但除此之外我没有,除非我使用setTimeout(。 ..,0)