js对象的继承以及公有私有属性的定义和读写

最近想写一些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>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值