前回の記事で$classというツール関数を書きましたが、今回の記事ではそれを以下のように改良していきます。以下の関数を実装します
1、継承
2. サブクラスが親クラスを継承する場合、親クラスのプライベート属性は継承しません
/**
* @param {String} className
* @param {String/Function} superCls
* @param {Function} classImp
*/
function $class(className, superCls, classImp){
if(superCls === '') superCls = オブジェクト;
function clazz (){
= new superCls(); var _super = superCls.prototype;
window[クラス名] =
classImp.apply; [_super]);
}
最初に親クラスを作成します
コードをコピーします
コードは次のとおりです:/** * 親クラスの人 */
$class('person','',function(){
// プライベート プロパティの年齢
var age;
this.init = function(n, a){
return this.name
};
this.setName = function(name){
this.name =名前;
}
this.getAge = function(){
年齢を返す
};
this.setAge = function(a){
年齢 = a; };
});
人から継承されたサブクラスを作成します
コードをコピーします
コードは次のとおりです:
$class("Man",person, function(supr){
var school;
this.init = function(n, a, s) {
});
サブクラス インスタンスを追加します。 >
コードをコピー
コードは次のとおりです:
var m = new Man('tom', 25, 'pku ');
console.log(m.name); // tom は親クラスの共通属性名を継承できます。
console.log(m.age);親クラスのプライベート属性 age を直接使用して
console.log(m.getAge()); // 25 プライベート属性 age は親クラスの public メソッド getAge
console を通じて取得できます。 log(m.school); // 未定義の Man 自身のプライベート属性はドット演算子を介して取得できません
console.log(m.getSchool) ()); // pku はプライベート属性 school
getSchool() メソッド経由