物件導向語言旨意在於模擬現實世界中人類的思考模式(雖然很多人不以為然),每個物件都會有方法與屬性,藉此賦予一個物件的職責,操縱物件工作,可說是傳達一個message給物件,物件收到訊息後便可進行對應的動作,再視情況把訊息傳回給呼叫者(caller/invoker)。

JavaScript中,如果要將類別定義方法,可以寫成:

var Class = function () {
    var klass = function () {
        this.init.apply(this, arguments);
    };
    klass.prototype.init = function (attrs) {
        for(var attr in attrs){
            this[attr] = attrs[attr];
        }
    };
    //short cuts:
    klass.fn = klass.prototype;
    klass.fn.parent = klass;

    //extend the Class-level properties:
    klass.extend = function (obj) {
//If the parameter contains extended(), invoke it as callback var extended = typeof obj.extended === 'function' ? obj.extended : null; for (var attr in obj) { klass[attr] = obj; } if (extended !== null) { extend(klass); } }; //extend the instance-level properties: klass.include = function (obj) {
//If the parameter contains included, invoke it as callback var included = typeof obj.included === 'function' ? obj.included : null; for (var attr in obj) { klass.fn[attr] = obj[attr]; } if (included !== null) { included(klass); } }; return klass; }; var Person = new Class(); Person.include({ name: '', eat: function () { console.info('Eat food, ' + this.name + '!'); } }); var bob = new Person(); bob.name = 'Bob'; var mary = new Person(); mary.name = 'Mary'; bob.eat(); mary.eat();

 如果希望模擬更為細緻的結構,像是:

男人是人類的一種、大衛是男人、男人都喜歡放屁、所以大衛也喜歡放屁

那麼就需要使用到繼承(inheritance)的概念,也是下一次的主題。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 odot 的頭像
    odot

    安德網路--值得信賴的社群專家

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