猿问

如何在javascript中的另一个类中实例化类?

如何在javascript中的另一个类中实例化类?一个类有静态和非静态方法


export default class MyClass {

    static staticMethod() {

        return console.log(`this is static method`);

    }


    nonStaticMethod() {

        return console.log(`this is not static method`);

    }


}

我可以在其他一些 js 文件中从上面访问静态方法,它是这样的类:


import MyClass form "somewhere";

MyClass.staticMethod(); //this works 

但是如何访问非静态方法?


//This does not work

import MyClass form "somewhere";

MyClass.nonStaticMethod();

为了使其工作,需要创建/传递 MyClass 的实例。我怎么能做这样的事情?


let myClass = new MyClass();

myClass.nonStaticMethod();

//I am getting uncaught ReferenceError: nonStaticMethod is not defined


繁星淼淼
浏览 262回答 2
2回答

尚方宝剑之说

创建类的实例,然后调用实例方法。您不能像那样从静态上下文中调用实例方法。请参阅下面的示例代码:class ClassA {  static staticMethod() {    return 'this is static method';  }  nonStaticMethod() {    return 'this is not static method';  }}//Call static method:console.log(ClassA.staticMethod()); //Works as expected//ClassA.nonStaticMethod(); // Uncomment and see it Will cause a Uncaught TypeError//Call instance method:const instance = new ClassA();//console.log(instance.staticMethod());  // Uncomment and see it Will cause a Uncaught TypeErrorconsole.log(instance.nonStaticMethod()); //Works as expected

莫回无

我真的没有看到这里有什么问题。这段代码工作得很好。class myClass {    static staticMethod() {        return console.log(`this is static method`);    }    nonStaticMethod() {        return console.log(`this is not static method`);    }}myClass.staticMethod();let classInstance = new myClass();classInstance.nonStaticMethod();
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答