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来使用构造函数。
酷客网相关文章:
评论前必须登录!
注册