面向对象的程序设计(-)

2017-04-25  本文已影响0人  aermin

tips:接下去会在github写博客,简书不再更新和修改文章,欢迎大家逛逛我的新博客点击查看 ,我会尽量用更容易理解的方式写好每一篇博客,大家一起学习交流😄。

理解对象

定义:对象是无序属性集合,其属性可以包含基本值、对象或者函数

属性类型

创建对象

可以通过“构造函数”或者“对象字面量”方法创建函数

工厂模式

  function creatPerson(name,age,job){  
        var o=new Object();  
        o.name=name;  
        o.age=age;  
        o.job=job;  
        return o  
    }                                                                        
  var person1 = creatPerson(“hxvin”,21,”F-E”);  

构造函数模式

 function Person(name,age,job){  
        this.name=name;  
        this.age=age;  
        this.job=job;  
        this.sayName=function sayName(){alert(this.name);};  
    };  
    var person1=new Person(“hxvin”,21,"Front-end-Engineer");  
          function Person(name,age,job){  
                this.name=name;  
                this.age=age;  
                this.job=job;  
                this.sayName=sayName  
            };  
            function sayName(){alert(this.name);};  
            //将sayName添加到全局变量中,这样显然有很多不足  

原型模式

       function Person(){};  
        Person.prototype.name=“hxvin”;  
        Person.prototype.sayname=function(){ alert(this.name);  };                         
        var person1=new Person();                                   
        person1.dayName(); //“hxvin”  
        
      //可以重新设置constructor  
        function Perspn(){};  
        Person.prototype={  
            constructor=Person,  
            name="Nick"  
        };  
  
      function Person(){};  
        Person.prototype={  
            name="Nick",  
            sayName=function(){alert(this.name)}  
        }  

组合使用构造函数模式和原型模式

 function Person(name,age,job){  
       this.name=name,  
       this.age=age,  
       this.job=job  
   };  
   Person.prototype={  
       constructor=Person,  
       sayName=function(){alert(this.name)}  
   }  

动态原型模式

  function Person(name,age,job){          //属性  
        this.name=name;  
        this.age=age;  
        this.job=job;  
        //方法  
        if(typeof sayName != "function"){  
            Person.prototype.sayName = function(){alert(this.name)}  
        }  
    } 
     

//方法中,只在sayName()方法不存在的清况下,才会将它添加到原型中。
这里对原型所做的修改,能够立即在所有实例中得到反映。

寄生构造函数模式

  function Person(name,age,job){  
        var o = new Object();  
        o.name = name;  
        o.age = age;  
        o.job = job;  
        o.sayName = function(){alert(o.name)};  
        return o  
    };  
    var person1 = new Person();  
    

稳妥构造函数模式

  function Person(name,age,job){  
        var o = new Object();  
        o.sayName = function(){alert(name)}  
    }  
  
    var friend = Person (“hxvin”,”21”,”f-e”);  
        friend.sayName(}; //“hxvin” 

这样,变蜇person 中保存的是一个稳妥对象, 而除了调用sayName() 方法外,没有别的方式可以访问其数据成员。

上一篇 下一篇

猜你喜欢

热点阅读