美文网首页
面向对象1 构造方法

面向对象1 构造方法

作者: maomizone | 来源:发表于2017-03-14 11:28 被阅读0次

    对象:黑盒子,不知道内部构造,但会使用表面的功能

    面向对象的特点

    • 抽象:抽出我们关心的特点
    • 封装:黑盒子,不知道内部构造,但会使用表面的功能
    • 继承:继承父类所有特点,又有自己的特点
      1. 多重继承
      2. 多态

    变量/属性 函数/方法

    • 变量的自由的,属性是有主的(对象的)
    • 函数是自由的,方法是有主的(对象的)

    this:当前的方法属于谁(当前发生事件的对象)

    工厂模式的缺点(构造函数)

    1. 没有new
    2. 同样的方法没有共享,导致占用内存,showName是同样的方法,不需要重复初始化
    function createPerson(name){
        //原料
        var p = new Object();
        //加工
        p.name = name;
        
        p.showName = function(){
            return this.name;
        }
        //出厂
        return obj;
    }
    

    改1

    解决new 但是方法还是没有共享

    // 类名首字母大写
    function CreatePerson2(name){
        //系统偷偷为我们创建
        //var this = new Object();
        this.name = name;
    
        this.showName = function(){
            return this.name;
        }
        //系统偷偷为我们出厂
        //return this;
    }
    
    var jack = new createPerson2("jack");
    var dav = new createPerson2("dav");
    alert(jack.showName == dav.showName);  // false
    

    类和对象

    类: 模子 Array
    对象:产品(成品) arr

    原型 prototype

    css中的class:一次给一组元素加上样式 --->js的原型
    行间样式: 一次给一个元素加上样式 --->js给对象加东西

    改2 混合方式

    • 构造函数加属性
    • 原型加方法
    • 类名首字母大写
    function CreatePerson3(name){
        this.name = name;
    }
    //为类加一个共通方法 实现方法的共享
    CreatePerson3.prototype.showName = function(){
        return this.name;
    }
    var jack = new CreatePerson3("jack");
    var dav = new CreatePerson3("dav");
    alert(jack.showName == dav.showName);  // true
    

    相关文章

      网友评论

          本文标题:面向对象1 构造方法

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