【问题标题】:calling function defined in onDomReadyonDomReady 中定义的调用函数
【发布时间】:2013-12-03 10:56:13
【问题描述】:

下面是我的示例 js,其中所有内容都在 doDomReady 函数中定义,它们是多个函数。 `

YAHOO.namespace("YAHOO.User");
YAHOO.User = (function() {
Event.onDOMReady(UserData = function() {
.......
function save(){}
..........
});

})();`

从上面的 js 文件中,我想像这样从外部(从其他 js 文件)调用 save 方法 ->YAHOO.User.save(resultset) 但我无法调用它,因为它不可见。

谁能告诉我在上述情况下如何调用函数。

【问题讨论】:

  • 为什么不在外面定义YAHOO.User.save,在doDomReady中调用呢?

标签: javascript yui


【解决方案1】:
window.save == function(resultset){ ... }

这会将其置于全局范围内,因此您可以从另一个脚本调用save()。要在 YAHOO.User 下命名它,我想它会是:

window.YAHOO.User.save = function(resultset){ ... }

...然后你可以从外面打电话给YAHOO.User.save(resultset)

【讨论】:

  • 这可能是个愚蠢的问题,但我是新手,所以问这里的 window 指的是什么?
  • 好问题! window 是 HTML 文档的父对象。您在 HTML 或 javascript 中创建的每个对象都是 window 对象的后代,无论是直接在窗口上,例如window.myFunction 或在窗口的子属性下,例如window.myNameSpace.myFunction。这是一个有用的图表:stackoverflow.com/questions/8285895/…
  • 如果您在 JavaScript 中创建变量,它们将具有在其中声明的对象(或函数)的范围。如果它们没有在任何对象或函数中声明,它们将具有window 的范围(全局范围)。
  • 这里有一个很好的答案,有一些不同范围的例子:stackoverflow.com/a/500459/940252
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-27
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
相关资源
最近更新 更多