【问题标题】:Why can't I access objects through the window object when using jQuery?为什么使用jQuery时不能通过window对象访问对象?
【发布时间】:2012-09-09 23:50:28
【问题描述】:

我正在尝试通过窗口对象访问一个函数。在我的代码中,我的函数被一个字符串引用,所以我必须使用窗口对象(或 eval)来获取它。我用纯 JavaScript 测试了我的代码,它运行良好。但是当使用 jQuery 时它失败了。这是我的测试代码:

function speak(words, callback){
  for(var i=0;i<10000;i++){
      console.log(words);
  }
  if(callback)
    callback.call();
}

console.log(window['speak']);​

Here is a link to the pure JavaScript version which works.
Here is a link to the jQuery version which doesn't work.

我需要做什么才能在 jQuery 中进行这项工作?

【问题讨论】:

    标签: javascript jquery window-object


    【解决方案1】:

    您没有将speak 声明为window 的成员,而JSFiddle 实际上将它包装在document.ready 回调中。 You'll need to explicitly set window.speak = speak as part of your code if you want it available on the window object.

    或者,您需要将 fiddle 配置为 execute without a wrapper rather than onDomReady

    【讨论】:

    • 哦,我明白了。唔。所以任何不在document.ready回调中的函数都会自动声明为window的成员,但如果它在document.ready中,那么它不是吗?
    • @Aust,在全局作用域中声明的函数和变量被隐式添加到全局对象中,在另一个函数中声明的函数和变量只在该函数中存在。在编写 JavaScript 时,建议将所有代码都写在一个闭包中,以免意外的全局污染。
    猜你喜欢
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 2013-03-08
    • 2019-01-09
    • 1970-01-01
    • 2021-04-25
    • 2017-05-28
    • 1970-01-01
    相关资源
    最近更新 更多