close

JavaScript不同於一般的物件導向語言,語法本身採用的是原型繼承(prototype)的方式在實踐物件導向機制的,如果要模仿一般物件導向語言,可以這樣做:

var Class = function () {
    var klass = function () {
        //this this refers to any caller invokes for instanclize, in this case, man
        this.init.apply(this, arguments);
    };
    klass.prototype.init = function () {
        console.info('Default Init()');
    };
    return klass;
};
 
//Create a new Class
var Person = new Class();
var man = new Person();
 
有了這個概念後,就可以繼續往下發展,使用這個美妙的類別模擬一些資料結構:
var Class = function () {
    var klass = function () {
        //this this refers to any caller invokes for instanclize
        this.init.apply(this, arguments);
    };
    klass.prototype.init = function () {
        console.info('Default Init()');
        for (var col in arguments[0]) {
            this[col] = arguments[0][col];
        }
    };
    return klass;
};

//Create a new Class
var Person = new Class();
//Attributes:
Person.gender = '';
Person.name = '';

var man = new Person({
    gender: 'male',
    name: 'Bob'
}),
    woman = new Person({
        gender: 'female',
        name: 'Mary'
    });
console.dir(man);
console.dir(woman);
使用jFiddle實際執行看看,就會看到man與woman各代表了不同的物件,而在一開始klass裡的this也指向到了不同的實體(instance),就像是一般的物件導向語言那樣。
arrow
arrow
    文章標籤
    javascript MVC OOP
    全站熱搜
    創作者介紹
    創作者 鍾協良 的頭像
    鍾協良

    Aitch的部落格

    鍾協良 發表在 痞客邦 留言(0) 人氣()