如何在JavaScript中实现私有属性的写类方式(二)


Posted in Javascript onDecember 04, 2013

上一篇写了个工具函数$class,这篇再完善以下。实现以下功能

1,继承

2,子类继承父类时,不继承父类的私有属性

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

先写个父类
/** 
 * 父类 Person 
 */
$class('Person','',function(){ 
    // 私有属性age 
    var age; 
    this.init = function(n, a){ 
        // 公有属性name 
        this.name = n; 
        // 私有属性初始化 
        age = a; 
    }; 
    this.getName = function(){ 
        return this.name; 
    }; 
    this.setName = function(name){ 
        this.name = name; 
    } 
    this.getAge = function(){ 
        return age; 
    }; 
    this.setAge = function(a){ 
        age = a; 
    }; 
});

写子类,继承于Person
$class("Man",Person, function(supr){ 
    var school; 
    this.init = function(n, a, s){ 
        supr.init.apply(this, [n,a]); 
        school = s; 
    } 
    this.getSchool = function(){ 
        return school; 
    }; 
    this.setSchool = function(s){ 
        school = s; 
    }; 
});

new一个子类实例
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
Javascript 相关文章推荐
原生js实现查找/添加/删除/指定元素的class
Apr 12 Javascript
用js实现in_array的方法
Nov 05 Javascript
js实现继承的5种方式
Dec 01 Javascript
js实现滚动条滚动到某个位置便自动定位某个tr
Jan 20 Javascript
纯JS代码实现隔行变色鼠标移入高亮
Nov 23 Javascript
面包屑导航详解
Dec 07 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
Mar 09 Javascript
jQuery实现导航样式布局操作示例【可自定义样式布局】
Jul 24 jQuery
angular 实时监听input框value值的变化触发函数方法
Aug 31 Javascript
webpack 开发和生产并行设置的方法
Nov 08 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
Nov 12 Javascript
vue-video-player视频播放器使用配置详解
Oct 23 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
Dec 04 #Javascript
JavaScript判断变量是否为undefined的两种写法区别
Dec 04 #Javascript
ExtJS4中使用mixins实现多继承示例
Dec 03 #Javascript
ExtJS4中的requires使用方法示例介绍
Dec 03 #Javascript
利用JS进行图片的切换即特效展示图片
Dec 03 #Javascript
JavaScript伸缩的菜单简单示例
Dec 03 #Javascript
JS window对象的top、parent、opener含义介绍
Dec 03 #Javascript
You might like
PHP读取MySQL数据代码
2008/06/05 PHP
php实现的常见排序算法汇总
2014/09/08 PHP
php+mysql大量用户登录解决方案分析
2014/12/29 PHP
PHP的PDO操作简单示例
2016/03/30 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
javascript中强制执行toString()具体实现
2013/04/27 Javascript
调用DOM对象的focus使文本框获得焦点
2014/02/19 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
javascript使用Promise对象实现异步编程
2016/03/01 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
javascript实现滚动效果的数字时钟实例
2016/07/21 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
JS中this上下文对象使用方式
2016/10/09 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
H5+C3+JS实现五子棋游戏(AI篇)
2020/05/28 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
[48:11]完美世界DOTA2联赛 Magma vs GXR 第二场 11.07
2020/11/10 DOTA
Python实现扫描局域网活动ip(扫描在线电脑)
2015/04/28 Python
python中字符串的操作方法大全
2018/06/03 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
Peter Alexander新西兰站:澳大利亚领先的睡衣设计师品牌
2016/12/10 全球购物
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
是什么让J2EE适合用来开发多层的分布式的应用
2015/01/16 面试题
C语言怎样定义和声明全局变量和函数最好
2013/11/26 面试题
解除劳动合同协议书
2014/04/14 职场文书
大足石刻导游词
2015/02/02 职场文书
入党申请书怎么写?
2019/06/11 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书