JavaScript类

JavaScript类,大多数支持OOP的编程语言都采用和JavaScript不同的方法来创建对象。

使用此类编程语言的程序员,通常都习惯于处理类的概念。类充当创建对象的一个模板或蓝图。新创建的类,可以从其他类继承功能,并且充当根据这种继承关系而创建的对象的蓝图,从而在继承系统中创建一种子类关系。

相反,JavaScript拥有一个继承的原型系统,其中,原型是对象的一个功能化的实例,并且对象直接从这样的父对象来继承。为了在这些概念之间构建起桥梁,JavaScript最近引入了一个class关键字。让我们通过前面的Pet对象来看看它是如何工作的。如下是部分代码:

function Pet() {
    this.animal = "";
    this.name = "";
    this.setAnimal = function(newAnimal) {
        this.animal = newAnimal;
    }
    this.setName = function(newName) {
        this.name = newName;
    }
}
var myCat = new Pet();
myCat.setAnimal = "cat";
myCat.setName = "Sylvester";

现在,我们来看看如何用class关键字创建一个类似的对象。如下是用了新语法的对等代码:

class Pet {
    constructor(animal, name) {
        this.animal = animal,
        this.name = name
    }
    setAnimal(newAnimal) {
        this.animal = newAnimal;
    }
    setName(newName) {
        this.name = newName;
    }
}
var myCat = new Pet();
myCat.setAnimal("cat");
myCat.setName("Sylvester");

新的版本看上去更加简练而易于阅读。特别是,不需要使用那么多的function关键字。

这个版本还有一个叫作构造函数(constructor)的函数,该函数是在用new关键字创建对象时所运行的函数。在前面的例子中,通过构造函数,我们可以很容易地在对象定义中为name和animal设置值。

var myCat = new Pet("cat", "Sylvester");

构造函数的有用之处在于,可以编写一个新对象的设置和初始化过程所需的任何代码。

说明:构造函数需要new
和一个常规的函数不同,不使用关键字new的话,是无法调用类的构造函数的。如果不使用new的话,将会产生一个错误:

> var MyCat = Pet(); //未捕获TypeError:无法调用构造函数Pet
                     // 没有使用′new′

换言之,要像前面的例子中的代码一样,总是通过new来使用构造函数。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!