最近想写一些js工具,有些方面需要用到面向对象的方法,比如继承父类属性和方法、通过私有化隐藏某些对象的属性等,因为没有系统的学习js,所以不知道怎么做,觉得很伤脑筋。

今天受到技术群里朋友的提示,并查阅了一些资料,终于把这个问题解决了,真是大快人心啊,哈哈,哈哈,哈哈哈哈!!!

下面列举了两种继承方式,各有优缺点,可根据业务需要选择,现把自己调试的代码整理如下,以备参考:

    <script type="text/javascript">
function TestClassA(name, number) {
this.name = name; //public
this.number = number; //public var account = ''; //private
var phone = '13612345678'; //private this.getAccount = function() {
return account;
}
this.setAccount = function (a) {
account = a;
}
} /* 类型继承(没有继承原型,且难以多重继承)
// 1. 定义即继承(固定不变的继承)
function TestClassB(x, y) {
this.info = 'name:' + x + ', number:' + y; //通过调用父类构造方法继承属性
TestClassA.call(this, x, y);
}
//创建实例
var b = new TestClassB("test name", 123);
//验证
console.log(b); // 2. 使用时继承(灵活多变的继承)
function TestClassB(p, x, y) {
this.info = 'name:' + x + ', number:' + y; //通过调用传入的类的构造方法继承属性
p.call(this, x, y);
}
//创建实例
var b = new TestClassB(TestClassA, "test name", 123);
//验证
console.log(b);
*/ // 原型链继承(继承原型,方便多重继承)
function TestClassB(p, x, y) {
this.info = 'name:' + x + ', number:' + y;
}
TestClassB.prototype = new TestClassA();
function TestClassC(p, x, y) {
this.Msg = 'msg';
}
TestClassC.prototype = new TestClassB();
//创建实例
var c = new TestClassC("test c name", 456);
c.setAccount("test account");
console.log(c);
</script>

js对象的继承以及公有私有属性的定义和读写的更多相关文章

  1. Java中子类能继承父类的私有属性吗?

    前段时间去听老师讲课的时候,老师告诉我子类是可以继承父类所有的属性和方法的.当时我是极其疑惑的,因为之前学校考试时这个考点我记得很清楚:子类只能继承父类的非私有属性和方法.老师给我的解释是这样的--先 ...

  2. js对象和继承总结

    创建对象方式: [工厂模式]:无法解决对象识别问题 [构造函数模式]:每个方法都要在每个实例上创建一遍 [原型模式]:原型上属性为引用类型的问题,见例子 [组合模式]:解决上述问题 [动态原型模式]: ...

  3. js对象的数据属性和访问器属性

    js面向对象 ECMA-262第5版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征.ECMA-262定义这些特性是为了实现javascript引擎用的,因此 ...

  4. Java 继承问题 -- 子类是否继承父类的私有属性

    理解一: 子类会继承父类的所有属性和方法,至于能不能直接访问,那就是访问权限的问题了. 例如:父类有个private String name; 属性.子类会继承下来,但子类访问不了,因为是privat ...

  5. js 对象方法、类方法、原型方法的区别;私有属性、公有属性、公有静态属性的区别

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  6. 对象方法、类方法、原型方法 && 私有属性、公有属性、公有静态属性

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  7. JS 详解对象的继承

    在学习这篇博文前,请先移步我的另外一篇博文:JS 一张图理解prototype.proto和constructor的关系,先弄清楚“原型链”,这样对于理解继承会非常有效. 注意:博文中提到的“属性”, ...

  8. 洗礼灵魂,修炼python(33)--面向对象编程(3)—特殊类方法__init__,公有属性,私有属性

    在上一篇博文里,传入参数时,是在实例化对象后且在调用方法时才传入参数,感觉是不是有点繁琐对吧?可以在实例化的时候就传入参数吗?可以的,这就是本篇博文的要讲到的构造器——__init__(两边双下划线) ...

  9. Js对象继承小结

    1.继承 对象的定义好用一些的一般是把实例对象的属性定义在类里面,通过this指针指向具体实例属性.定义对象的public方法时将其绑定到prototype中.子类在继承父类时可以通过对象冒充来继承父 ...

随机推荐

  1. C程序与Lua脚本相互调用

    Lua脚本是一种可用于C程序开发/测试的工具,本篇介绍一下C程序与Lua脚本如何进行相互调用,更加详细的操作参见<Programing in Lua>.本文分为3个部分:1.Windows ...

  2. 单片机联网需求攀升 WIZnet全硬件TCP/IP技术崛起

    --新华龙电子为韩国WIZnet公司网络芯片授权代理商,具有20多年的专业团队IC应用开发实力-- 如今不管是在企业还是小区.街道,甚至是居民室内,以太网接口无处不在.有鉴于此,电子设备必将向更加智能 ...

  3. spring3 项目更新

    列志华 (组长) http://www.cnblogs.com/liezhihua/ 团队guihub https://github.com/LWHTF/OrderingFood 黄柏堂 http:/ ...

  4. vsftp 根据用户设置

    #vsftpd.conf ###############pam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YESlocal_root=/da ...

  5. webform文件的上传

    文件上传 (控件:Fileupload) --文件映射:Server.MapPath(path)(相 对转绝对路径)--保存到指定路径:Fileupload.SaveAs 例子:点击按钮,获取上传图片 ...

  6. 微服务实战系列--Nginx官网发布(转)

    这是Nginx官网写的一个系列,共七篇文章,如下 Introduction to Microservices (this article) Building Microservices: Using ...

  7. 将Linux命令的结果作为下一个命令的参数

    查询所有的pid并杀死. jps -l | grep bdcsc2-native-demo | awk '{print $1}' | xargs kill -9 KISS:keep it short ...

  8. mat工具MemoryAnalyzer进行分析java内存溢出hprof文件

    java服务端程序报错后会生成hprof文件,我们可以通过mat工具MemoryAnalyzer进行分析 下载地址: http://www.eclipse.org/mat/downloads.php ...

  9. mysql命令行导入sql脚本中文变问号问题

    之前一直用工具连接mysql虽然小问题不断也都无伤大雅,最近做金融云项目,只能通过服务器的内网访问数据库,也就是说只能在linux下通过命令行访问,在导入中文的时候发现都变成问号了,经过查询资料解决, ...

  10. Aes 加解密算法

    public class AesHelper    {        /// <summary>        /// 生成128位的随机AES秘钥        /// </sum ...