【问题标题】:How to access objects in an external js file from another external js file如何从另一个外部 js 文件访问外部 js 文件中的对象
【发布时间】:2016-09-05 16:29:38
【问题描述】:

各位程序员们好,

我今天想知道如何从另一个外部 js 文件访问对象。我使用它作为在多个 js 文件中组织我的代码的一种方式。这是我想说的一个例子。

想象一下这是来自外部 js 文件的代码:

$(function () {

  function Person() {
    this.name = "Bob";
  }

})

我想在另一个 js 文件中访问该对象:

$(function () {

  var person = new Person;
  alert(person.name);

})

有没有办法做这样的事情?我需要如何定位 html?

【问题讨论】:

  • 如果 Person 的定义与您的海报一样 - 不可能在另一个文件中访问它。
  • @dfsq “喜欢你的海报”是什么意思
  • 问题已经得到解答,我花了很长时间才弄清楚,我所要做的就是把 javascript 文件都放在画布元素之后
  • 我的意思是“喜欢你发布ed”。

标签: javascript object external-js


【解决方案1】:

我的第一个疑惑是为什么你把你的 JS 包裹在一个这样的函数中。你可以在这里看到我已经从另一个在设置后加载的脚本中访问了“hello”——因为它是在全局空间中设置的。

https://jsfiddle.net/sj7bp97c/

<script src="https://pastebin.mozilla.org/?dl=8907696">
</script>
<script src="https://pastebin.mozilla.org/?dl=8907697">
</script>

一个脚本设置值,另一个将其打印到控制台。除非您的 Javascript 需要被函数包围,否则我不确定您为什么要这样做。

【讨论】:

  • 这是因为人们一直说我必须为 jQuery 或类似的东西包含它。
  • 不幸的是,我希望我的代码在文件而不是 url 中发送
  • @Bob 所有的 Javascript 都可以在这两个链接中找到(代表外部文件)。 pastebin.mozilla.org/8907696 是第一个,pastebin.mozilla.org/8907697 是第二个。
  • 这里是一个没有周围函数的 jQuery 示例。 jsfiddle.net/sj7bp97c/1
  • @Bob 文件和 URL 之间没有区别。代码加载相同,方法完全相同。如果你从这两个文件中复制了正文,将它们制作成本地脚本,并将它们包含在你的 HTML 中,它的工作原理是一样的。
【解决方案2】:

向全局范围显示函数:

$(function () {

  function Person() {
    this.name = "Bob";
  }

  return {
    Person: Person 
  }

})()

当向全局范围显示时,您可以在脚本启动后立即从另一个 JavaScript 文件中访问它。因此,您需要在 包含这个之后再包含它。

【讨论】:

    【解决方案3】:

    您只需要在 html 的 head 部分中提及您的两个 js 脚本文件。

    Javascript 会处理剩下的事情。 <head> <script src="First.js"></script> <script src="Second.js"></script> </head>

    【讨论】:

    • 表示 Person 未定义
    • 只需在第二个 js 文件中写入下面提到的代码。函数 Person() { this.name = "Bob"; }
    • 你在声明新对象时也犯了一个错误,应该是 var person=new Person()
    • 其实没关系,对我来说这两种方式都可以
    • 你的回答根本没有帮助我,实际上延迟了我解决我的问题,因为我的脚本标签根本不在头部,而是在最后。
    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 2018-03-31
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多