0
我一直在我的網絡應用中使用John Resig javascript class implementation,但測試顯示它非常慢。我真的覺得它對於擴展對象的方式很有用,並且從更好的代碼和更少的冗餘中獲得好處。在JavaScript中實現簡單繼承
在某些文章中解釋說,由於處理_super
方法的原因,速度很慢。 由於super
是Java風格,並且大部分時間我都是用PHP開發的,所以我使用parent::
樣式(在PHP中使用)製作了我自己的Resig實現版本,旨在使其更快。那就是:
(function() {
this.Class = function() {
};
Class.extend = function extend(prop) {
var prototype = new this();
prototype.parent = this.prototype;
for (var name in prop) {
prototype[name] = prop[name];
}
function Class() {
this.construct.apply(this, arguments);
}
Class.prototype = prototype;
Class.prototype.constructor = Class;
Class.extend = extend;
return Class;
};
})();
使用案例:
var Person = Class.extend({
construct: function (name) {
this.name = name;
},
say: function() {
console.log('I am person: '+this.name);
},
});
var Student = Person.extend({
construct: function (name, mark) {
this.parent.construct.call(this, name);
this.mark = 5;
},
say: function() {
this.parent.say();
console.log('And a student');
},
getMark: function(){
console.log(this.mark);
}
});
var me = new Student('Alban');
me.say();
me.getMark();
console.log(me instanceof Person);
console.log(me instanceof Student);
這方面有任何意見?我這樣快嗎?正確性怎麼樣?
此問題似乎是脫離主題,因爲它要求[代碼審查](http://codereview.stackexchange.com/)。 – Quentin
是的,如果你可以將它移動到正確的部分會更好 – albanx
@Quentin我把它移到這裏http://codereview.stackexchange.com/questions/77592/implementing-simple-and-fast-inheritance-in- JavaScript的。你有什麼想法? – albanx