MST

星途 面试题库

面试题:JavaScript中使用class关键字定义类时,静态方法和实例方法在调用上有什么边界情况需要注意?

请详细说明在JavaScript中,使用class关键字定义类后,静态方法和实例方法在调用方式、作用域等方面存在哪些边界情况,并且通过代码示例展示。
48.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

调用方式

  1. 静态方法:通过类名直接调用,不能通过实例调用。
  2. 实例方法:通过类的实例来调用。

作用域

  1. 静态方法:其作用域在类本身,无法访问实例的属性,只能访问类的静态属性。
  2. 实例方法:作用域在类的实例上,可以访问实例的属性以及类的静态属性。

代码示例

class MyClass {
    constructor() {
        this.instanceProp = '实例属性';
    }

    static staticMethod() {
        // 这里不能访问this.instanceProp,会报错
        console.log('这是静态方法');
    }

    instanceMethod() {
        console.log(`这是实例方法,访问实例属性: ${this.instanceProp}`);
        console.log(`访问静态属性: ${MyClass.staticProp}`);
    }
}

MyClass.staticProp = '静态属性';

// 调用静态方法
MyClass.staticMethod(); 
// 尝试通过实例调用静态方法,会报错
// let myInstance = new MyClass();
// myInstance.staticMethod(); 

// 调用实例方法
let myInstance = new MyClass();
myInstance.instanceMethod();