如何在Javascript ES6中为类添加方法

时间:2016-03-05 12:01:36

标签: javascript class methods prototype ecmascript-5

我需要使用新语法向Javascript类添加方法。我试过这种方式:

class X{

    constructor() {
        this.a = 'b'
    }

    x(){

    }
}

X.prototype.y = function (){
    console.log('y')
}

var x = new X()

x.y()

console.log(X) // print the  the class but not the new method.

它只是打印:

class X{

    constructor() {
        this.a = 'b'
    }

    x(){}
}

但我期待

class X{

        constructor() {
            this.a = 'b'
        }

        x(){}

        y(){
            console.log('y');
        }
    }

如何向Javascript类添加新方法?

2 个答案:

答案 0 :(得分:3)

这很好,如果您在谷歌Chrome控制台中查看此内容,请通过展开 proto 节点进行检查。 或者尝试检查 console.log(X.y)console.log(X.prototype.y)console.log(x.y) 这必须打印该功能

答案 1 :(得分:-1)

只需将新方法添加到类声明中:

class X {
    constructor() {
        this.a = 'b'
    }
    y() {
        console.log('y');
    }
}

新的类语法基本上是原型模式的包装器。 但是,如果您希望在现有类上使用基于的新类,则可以将新类声明为具有extends的现有类的扩展。例如:

class Y extends X {
   constructor() {
       super();
   }
   someNewMethod() {...}
}
let foo = new Y();
console.log(foo.a); // 'b'
foo.y(); // 'y