ES5关于面向对象

es5中的定义类

 function Box(a,b) { }
        Box.prototype={
            a:1,
            c:function () {
            }
        };
        Object.defineProperty(Box.prototype,"b",{
            value:2
        });
        Box.prototype.d=function () {
        };
        //指向构造函数
        //  对象.constructor 就可以知道当前的对象是谁的实例化内容
        Box.prototype.constructor=Box;
        
     //实例化一个box
        var box=new Box();

给对象中添加原型属性和继承方法

封装的js文件

(function () {
//添加原型属性方法(深复制)
    Object.prototype.addProto=function (sourceObj) {
        var names=Object.getOwnPropertyNames(sourceObj);
        for(var i=0;i<names.length;i++){
            var desc=Object.getOwnPropertyDescriptor(sourceObj,names[i]);
            if(typeof desc.value==="object" && desc.value!==null){
                var obj=new desc.value.constructor;
                obj.addProto(desc.value);//把obj当成引用对象带入递归函数继续给obj赋值
                Object.defineProperty(this,names[i],{
                    enumerable:desc.enumerable,
                    writable:desc.writable,
                    configurable:desc.configurable,
                    value:obj
                });
                continue;
            }
            Object.defineProperty(this,names[i],desc);
        }
        return this;
    };


    //继承
    Function.prototype.extendClass=function (supClass) {
        function F() {}
        F.prototype=supClass.prototype;
        this.prototype=new F();
        this.prototype.constructor=this;
        this.supClass=supClass.prototype;
        if(supClass.prototype.constructor===Object.prototype.constructor){
            supClass.prototype.constructor=supClass;
        }
    }
})();
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值