咱们可以通过以下方式创建一个类并为之添加属性或者方法:
var Book = function (name, price){
this.name = name;
this.price = price
}
为类添加属性或者方法有两种形式,一是为原型对象属性一一赋值,二是将一个对象赋值给类的原型对象。例如:
Book.prototype.title = function(){
// something TODO
}
// 或者
Book.prototype = {
title: function(){
// something TODO
}
}
使用功能方法时需要new关键词来实例化新的对象,使用点语法来访问属性或者方法。例如:
var book = new Book('JS', 100);
console.log(book.price); // 100
然而有时候可能实例化时忘记加new关键词,可以改造一下创建类的方法如下:
var Book = function(name, price) {
// 判断this是否是当前对象(如果是说明是通过new创建的)
if (this instanceof Book) {
this.name = name;
this.price = price;
// 否则重新创建这个对象
} else {
return new Book(name, price)
}
}
var book1 = new Book('JS', 100);
console.log(book1.price); // 100
// 这样即使实例化的时候忘记new代码也能正常运行。
var book2 = Book('CSS', 50);
console.log(book2.price); // 50