美文网首页
js面向对象

js面向对象

作者: 知识分享share | 来源:发表于2018-03-28 23:18 被阅读0次
    <script>
    //工厂模式
    function createPerson(name,qq){
        // 原料
        var obj = new Object();
        //加工
        obj.name = name;
        obj.qq = qq;
    
        obj.showName = function(){
            console.log('我的名字叫:'+this.name);
        };
        obj.showQQ = function(){
            console.log("我qq号:"+this.qq);
        };
        obj.showName();
        obj.showQQ();
        //出厂
        return obj;
    }
    //没有new,函数重复
    var  obj1 = createPerson("xiaomin",'134325145');
    
    
    function createPerson(name,qq){
        // 系统自己创建
        // var this = new Object();
    
        this.name = name;
        this.qq = qq;
    
        obj.showName = function(){
            console.log('我的名字叫:'+this.name);
        };
        obj.showQQ = function(){
            console.log("我qq号:"+this.qq);
        };
        this.showName();
        this.showQQ();
        //系统返回
        // return this;
    }
    
    var obj2 = new createPerson("xiaonan",'32546575');
    
    function createPerson(name,qq){
        // 系统自己创建
        // var this = new Object();
    
        this.name = name;
        this.qq = qq;
    
        obj.showName = function(){
        };
        obj.showQQ = function(){
        };
        this.showName();
        this.showQQ();
        //系统返回
        // return this;
    }
    
    createPerson.prototype.showName=function(){
            console.log('我的名字叫:'+this.name);
    
    }
    createPerson.prototype.showQQ=function(){
            console.log("我qq号:"+this.qq);
    }
    var obj2 = new createPerson("xiaonan",'32546575');
    
    
    
    
    var arr1 = new Array(12,324,435,23);
    var arr2 = new Array(12,324,23);
    Array.prototype.sum =function()//class
    // arr1.sum = function()//行间样式
    {
        var result = 0;
        for(var i =0;i<this.length;i++){
            return +=this[i];
        }
        return result;
    }
    console.log(arr1.sum());
    console.log(arr2.sum());
    
    
    类 模子
    对象 产品
    
    
    css类比
    
    class 一样
    行间 不同
    
    用构造函数加属性
    用原型加方法
    
    面向对象只关注提供的方法,不关注内部实现
    
    
    
    function A(){
        this.a=0;
        alert(this);
    }
    //属性继承
    function B(){
        // this = new B()
        A.call(this);
    }
    //方法继承避免引用
    for(var i in A.prototype){
        B.prototype[i] = A.prototype[i];
    }
    B.prototype.fn=function(){}
    var obj = new B();
    
    </script>
    
    

    相关文章

      网友评论

          本文标题:js面向对象

          本文链接:https://www.haomeiwen.com/subject/ypdpcftx.html