網上一查,肯定搜索到繼承的文章真心不少。我這裡就只說一下自己常用的方式: 通常 在編寫一個類的做法是,在構造函數里聲明欄位,在prototype里指定方法。 demo: ...
網上一查,肯定搜索到繼承的文章真心不少。我這裡就只說一下自己常用的方式:
通常 在編寫一個類的做法是,在構造函數里聲明欄位,在prototype里指定方法。
//step1: 在子類的構造器里法里實例call ,apply 來繼承欄位
//step2: 類聲明完畢後,使用inheritsPrototype來繼承方法
function inheritsPrototype(clazz, baseClazz) { var clazzPrototype = clazz.prototype; function F() {}; F.prototype = baseClazz.prototype; clazz.prototype = new F(); for (var prop in clazzPrototype) { clazz.prototype[prop] = clazzPrototype[prop]; } // clazz.prototype.constructor = clazz; // clazz.superClass = baseClazz; }
demo:
function inheritsPrototype(clazz, baseClazz) { var clazzPrototype = clazz.prototype; function F() {}; F.prototype = baseClazz.prototype; clazz.prototype = new F(); for (var prop in clazzPrototype) { clazz.prototype[prop] = clazzPrototype[prop]; } } function A(id, name){ this.id = id; this.name = name; } A.prototype.show = function (){ console.log(this.id, this.name); } function B(id, name, age){ A.call(this, id, name); // 繼承欄位 this.age = age; } inheritsPrototype(B, A); // 繼承方法 var objB = new B("x01", "name1", 12); objB.show();