首頁  >  文章  >  web前端  >  如何在JavaScript中實作私有屬性的寫類別方式(二)_javascript技巧

如何在JavaScript中實作私有屬性的寫類別方式(二)_javascript技巧

WBOY
WBOY原創
2016-05-16 17:11:051034瀏覽

上一篇寫了個工具函數$class,這篇再完善以下。實現以下功能

1,繼承

2,子類別繼承父類別時,不繼承父類別的私有屬性

複製程式碼 程式碼如下:

/**
 * @param {String} className
 * @param {String/Function} superCls
 * @param {Function} classImp
 */
function $class(className, superCls, classImp){
    if(superCls === '') superCls = Object (){
        if(typeof this.init == "function"){
           🎜>    var p = clazz.prototype = new superCls();
    var _super = superCls.prototype;
    window[className] = clazz;
    classImp.apply(p, [super]);
先寫父類別




複製程式碼


程式碼如下:
** 🎝>*/$class('Person','',function(){     // 私人屬性age     var age;     this.init = function(n,)     this.init = function(n,)
   🎜>        // 公有屬性name
        this.name = n;
           this.getName = function(){
return this.name;
    };
    this.setName = function(name){
              return age;
    };
    this.setAge = function(a){
        age = a;
 繼承於Person




複製程式碼


程式碼如下:


$class("Man",Person, function(supr){
    var school;
    this.init = function(n, a, s){
      s;
    }
    this.getSchool = function(){
        return school;
    school = s;
};
}); 複製代碼


代碼如下:


var m = new Man('tom', 25, 'pku');
console.log(m.name); // tom 繼承父類別的共同屬性name可以直接使用點運算子取得
console.log(m.age);  // undefined 父類別的私有屬性age不能直接使用點運算子取得
console.log(m.getAge()); // 25 可透過父類別的共有方法getAge取得私有屬性age
console.log(m.school); // undefined Man自己的私有屬性仍無法透過點運算子取得
console.log(m.getSchool ()); // pku 透過getSchool()方法取得私有屬性school


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn