访问其他脚本中的对象属性

时间:2017-09-05 10:41:54

标签: javascript

我试图使用HTML脚本标记内的文件中定义的某个函数。

这是javascript文件myfunction.js:

fct = function() {
};

在index.html里面我有:

<script src="./myfunction.js"></script>
<script>
  fct.some.property = function() {
  }
</script>

它说fct.some在控制台上是未定义的。 如何定义一些内部fct,以便我可以在oter脚本中使用它?我不想使用任何图书馆。

我尝试了以下但不起作用:

fct = function() {
  return {
    some: {}
  }
};

3 个答案:

答案 0 :(得分:1)

我无法重现错误;当我按原样测试你的代码时

  

fct.some未定义

修复方法是:

fct.some = {};
fct.some.property = function() {
}

这对我来说很好。

答案 1 :(得分:0)

为了确保我的问题正确,看起来你正在尝试    使用你直接在javascript文件中写的函数    你的html文件,但你有一个问题,它回来了    未定义。

在测试中,我发现只要.js中的fct函数是全局的,那么它就可以工作,但HTML中的示例还有另一个问题(但它可能只是一个错字,因为它是一个例子)

您将.js文件的脚本src正确地放在内联js上方,但是然后在内联js脚本标记中说:

fct.some.property = function(){}

问题是.some尚未定义,因此您无法为其附加属性。尝试:

fct.some = {} // empty object
fct.some.property = function(){} 

编辑:所以,这适用于repl.it,但它不能在stackoverflow片段编辑器中工作。在代码段编辑器中,它给出了与您相同的错误。奇

let fct = function() {

}
<!DOCTYPE html>
<html>

<head>
  <link href="index.css" rel="stylesheet" type="text/css" />
</head>

<body>
  <script src="index.js"></script>
  <script>
    console.log(fct)
    fct.some = {}
    fct.some.property = function() {
      return 7
    }
    console.log(fct.some.property())
  </script>

</body>

</html>

答案 2 :(得分:0)

您正在导入JS文件。只需检查它是否在html的head标签中。您遇到此问题是因为您想将“property”分配给fct的“some”。你没有在这里定义什么是“某些”。我试图删除“some”

来解决您的问题

的index.html

<html>
<head>
<script src="myfunction.js"></script>
</head>
<script>
  fct.some = function() {
  }
</script>
<body>
</body>
</html>

myFunction.js
fct = function() {

};

以下是一些对您有用的链接adding custom properties to a function