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),就像是一般的物件導向語言那樣。
文章標籤
全站熱搜
留言列表