zoukankan      html  css  js  c++  java
  • static

    class中的static

    起因

    最近在学习手写 Promise 中,产生了一些关于 class 中 static 的疑问,因此在此记录下。在声明 Promise 中,声明了两个 resolve 和 reject,一个是普通的属性,一个是 static 属性。
    在 class 内部通过了 this.resolve 调用了 resolve 属性,而在外面使用 Promise.resolve()来调用了 static resolve。这两者存在什么区别。

    举例

    下面举个简单的例子来说明:

    1. 方法
    class Test {
        constructor() {
            this.testMethod();
        }
        testMethod = () => {
            console.log('test method');
        };
    }
    
    const test = new Test(); // test
    
    class Test2 {
        constructor() {
            this.testMethod();
        }
        static testMethod = () => {
            console.log('test method');
        };
    }
    const test2 = new Test2(); // this.testMethod is not a function
    
    1. 属性
    class Test {
        test = 'test';
        constructor() {
            console.log(this.test);
        }
    }
    
    const test = new Test(); // test
    
    
    class Test2 {
        static test = 'test';
        constructor() {
            console.log(this.test);
        }
    }
    const test2 = new Test2(); // undefined
    console.log(Test2.test); // test
    console.log(test2.test) // undefined
    

    总结

    在class中对于实例属性和方法与静态属性和方法的调用存在差异,对于实例的属性和方法可以通过this来调用,然后实例的属性以及方法都可以通过继承来获得,而静态的属性和方法则必须通过类名来进行调用。并且不会被继承。

  • 相关阅读:
    Python Module_subprocess_子进程(程序调用)
    开机自启动Powershell脚本
    开机自启动Powershell脚本
    Powershell 音乐播放
    Powershell 音乐播放
    Powershell指令集_2
    Zabbix实战-简易教程(1)--总流程
    AWS上获取监控数据(EC2/RDS都支持)
    Grafana最新版本4.3.1安装(后端使用mysql)
    Haproxy实战(3)
  • 原文地址:https://www.cnblogs.com/tutao1995/p/15304758.html
Copyright © 2011-2022 走看看