首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Javascript类的作用域之外访问它的方法

从Javascript类的作用域之外访问它的方法
EN

Stack Overflow用户
提问于 2021-10-17 05:52:22
回答 2查看 77关注 0票数 2

我使用webpack-4捆绑了一个JS类,但是我不能从它的作用域之外访问它的任何方法和属性。我遵循了这里给出的一些建议,但我仍然被卡住了。下面你会看到我需要实现的简化版本。任何关于如何让它工作的建议都将不胜感激。谢谢!

My webpack.config:

代码语言:javascript
复制
output: {
        filename: '[name].js',
        path: path.resolve(__dirname, '../../assets/js'), 
        library: 'MyModule',
        libraryTarget: 'var',
    },

The class file, Main.js:

代码语言:javascript
复制
export  class  Main{
  prop1 = 'This is Main.prop1';

  static hello = ()=>{
    console.log('Hello from Main');
  }

  static hi = function(){
    console.log('Hi from Main');
  }
}

Inside test.html:

代码语言:javascript
复制
<script src="./Main.js"></script>
<script>
window.onload = function(){
        var mainUX = MyModule;
        console.log(mainUX); // see output below**
        console.log(mainUX.prop1) // outputs 'undefined'
        mainUX.hello(); // Outputs Uncaught TypeError: mainUX.hello is not a function
        mainUX.hi();
       };
</script>

** In the console I get:

代码语言:javascript
复制
Object { Main: Getter, … }
​Main: 
​__esModule: true
​Symbol(Symbol.toStringTag): "Module"
​<get Main()>: function js()​
<prototype>: Object { … }
​​__defineGetter__: function __defineGetter__()
​​__defineSetter__: function __defineSetter__()
​​__lookupGetter__: function __lookupGetter__()
​​__lookupSetter__: function __lookupSetter__()
​​__proto__: 
​​constructor: function Object()
​​hasOwnProperty: function hasOwnProperty()
​​isPrototypeOf: function isPrototypeOf()
​​propertyIsEnumerable: function propertyIsEnumerable()
​​toLocaleString: function toLocaleString()
​​toString: function toString()
​​valueOf: function valueOf()
​​​length: 0
​​​name: "valueOf"
EN

回答 2

Stack Overflow用户

发布于 2021-10-17 06:11:58

您应该在最后一个脚本标记中使用import Main from './main.js',而不是<script src="./Main.js"></script>

票数 0
EN

Stack Overflow用户

发布于 2021-10-17 08:36:39

经过一整天的努力寻找我的问题的答案,我偶然发现了这个article。它非常彻底,很容易理解,我的问题很快就解决了。下面我附上了更正的代码,以防有人发现它有用。

我必须更改webpack.config文件,并将default添加到类导出中。

webpack.config:

代码语言:javascript
复制
output: {
        filename: '[name].js',
        path: path.resolve(__dirname, '../../assets/js'), 
        library: '',
        libraryExport: '',
        libraryTarget: 'umd',
        globalObject: 'this',
    },

The class file, Main.js:

代码语言:javascript
复制
export default class Main{

  prop1 = 'This is Main.prop1';

  hello = ()=>{
    console.log('Hello from inside MainUX');
  }

  hi = function(){
    console.log('Hi from Main');
  }
}

Inside test.html:

代码语言:javascript
复制
// in the head:
<script src="./Main.js"></script>

// elsewhere in the html document
<script>
    const Main = window.default;
    const mainUX = new Main();
    console.log(Main)
    mainUX.hi();
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69601669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档