JavaScript一看就懂(5)面向对象

创建对象

通过对象字面量创建对象

var Book = {
    name: 'js',
    desc: function(){
        alert('my name is '+this.name);
    }
};
Book.name; //js
Book.desc(); //my name is js

通过构造函数创建对象

function Book(name){
    this.name = name;
    
    this.desc = function(){
        alert('my name is '+this.name);
    }
}

var b = new Book('javascript');
b.name; //javascript
b.desc(); //my name is javascript

也可以把方法写到原型上,这样函数只创建一次,并且所有实例都可以重用:

function Book(name){
    this.name = name;
}

Book.prototype.desc = function(){
    alert('my name is '+this.name);
};

var b = new Book('php');
b.name; //php
b.desc(); //my name is php

继承

通过原型继承

function Book(name){
    this.name = name || '';
}
Book.prototype.desc = function(){
    alert('my name is '+this.name);
};

function ItBook(name, pages){
    this.name = name || 'itbook';
    this.pages = pages;
}

ItBook.prototype = new Book();
var ib = new ItBook('js', 300);

通过Object.create继承

var Book = {
    name: '',
    desc: function(){
        alert('my name is '+this.name);
    }
}

var ItBook = Object.create(Book);
ItBook.name = 'js';

通过call重用代码

function Book(name){
    this.name = name || '';
}
Book.prototype.desc = function(){
    alert('my name is '+this.name);
};

function ItBook(name, pages){
    Book.call(this, name);
    this.pages = pages;
}