JavaScript类中的实例方法、原型方法和静态方法

        JavaScript中的类从技术上来说仍然是函数,因为我们可以不使用class关键字而实现所有有关类的操作。但是class关键字并不是简单的语法糖,其内部运行机制是有一些区别的,不排除随着语法规范的更新,其中的差别会越来越大。

 

 

 

1. 实例方法

实例方法是指定义在构造函数里的方法,它是和新创建的this对象绑定的,只能通过新创建的这个对象来调用。同时也意味着在不同的实例上调用的实例方法是不同的。

 

2. 原型方法

        原型方法是定义在构造函数之外的方法,它是定义在类的原型对象上的,可以通过People.prototype.yuanxing()调用,同时也可以通过实例直接调用:p.yuanxing()

 

3. 静态方法

        静态方法是定义在构造函数之外,并通过static关键字定义的方法,它是定义在类本身上的,和具体的实例没有关系,通过类名直接调用:People.jingtai()

 

class People{

        constructor(name,age){

                this.name = name || "匿名";

                this.age = age || 1;

                this.shili = function(){

                        console.log("实例方法");

                }

        }

 

        yuanxing(){

                console.log("原型方法");

        }

 

        static jingtai = function(){

                console.log("静态方法");

        }

}

 

let p = new People("张三",18);

p.shili(); // 输出:实例方法

p.yuanxing(); // 输出:原型方法

p.jingtai(); // 报错,因为静态方法不能通过实例调用

People.jingtai(); // 输出:静态方法

People.yuanxing(); // 报错,因为原型方法不能通过类名直接调用

People.shili(); // 报错,因为实例方法也不能通过类名直接调用

People.prototype.yuanxing(); // 输出:原型方法

People.prototype.shili(); // 报错,因为实例方法只能通过实例对象调用

People.prototype.jingtai(); // 报错,因为静态方法只能通过类名调用

标签: JavaScript 实例方法 原型方法 静态方法