javascript對象---9 對象的建立模式

對象的建立模式分類函數

一.工廠模式this

1.工廠固定生產一種或幾種商品   工廠模式的使用場景 ---對象內部屬性值基本一致----》編碼

function Product( proName, Pinpai , createDate){
                
            }
            //建立多個商品對象,除了變量名不一樣,具備相對獨立的內存空間-----商品名稱、品牌相同,出產日期不一樣
            //不一樣的對象包含相同的屬性,形成代碼量增多

            var pro1 = new Product("酸奶","哇哈哈","2016-11-27");
            var pro2 = new Product("酸奶","哇哈哈","2016-11-27");
            var pro3 = new Product("酸奶","哇哈哈","2016-11-27");spa

因此使用工廠模式,對工廠賦值便可prototype

2.工廠模式特色對象

工廠模式,對建立對象進行了封裝,自動組裝對象的內部屬性ip

工廠模式,通常用於構建內存內容類似的對象內存

<script>原型鏈

        //建立一個商品類----包含商品應有信息
            function
Product( proName, Pinpai , createDate){
                this.proName = proName;
                this.Pinpai = Pinpai
                this.createDate =createDate;
            }
          
 //定義一個產品工廠,爲商品信息賦值
            function ProductFactory(){
            
            }
          
 //擴展產品工廠屬性
            ProductFactory.proName = "酸奶";
            ProductFactory.Pinpai = "娃哈哈";
            //擴展一個方法
         
   //生產日期不一樣,用執行一個Date()方式的構造函數
            ProductFactory.createProduct = function(){
                var pro = new Product( ProductFactory.proName, ProductFactory.Pinpai,
new Date() );
                return pro;
            }
            
            var pro1 = new Product("酸奶","娃哈哈","2016-11-28");  //普通建立對象方式
          
 var pro2 = ProductFactory.createProduct();  //工廠建立對象方式
            
            console.log(pro1.proName);
            console.log(pro2.createDate); 
        </script>
資源

二.構造函數模式

構造函數模式:使用構造函數建立對象實例

function Person(name,age){

     //屬性
            this.name=name;    //這裏this只 window
            this.age=age;

//行爲
            this.sayHello = function(){
            console.log("你好,我是" + this.name);
            }
        }


      //person 對象也具備name age屬性  

      //經過構造函數建立對象
        var person1 = new Person("Davi",19);

         var person2 = new Person("MIL",20);
        person1.sayHello()

構造函數執行優勢:在建立對象同時,就能夠給當前對象進行屬性賦值

缺點:每次建立對象,都會執行賦值---資源浪費

建立第一個對象,建立一個  function 而後賦值給 run,

建立第二個對象還要建立一個run方法,建立兩次函數,但執行的動做相同

每次建立對象,

3.原型模式---原型鏈構造方式

原型模式:將屬性和方法放到構造函數的 prototype  對象中。只要建立當前構造函數的對象,對象自己就具有當前構造函數的原型對象內的方法、屬性----使多個對象擁有相同的屬性方法。

 

//原型鏈構造函數
        function Person(){
            
        }
        Person.prototype.run = function(){
            console.log("快速跑");
        }
        var person1 = new Person(); 
        var person2 = new Person(); 
        person1.run();
        person2.run();
        //person1 person2 都共有 Person的原型對象中的方法

缺點:沒有辦法進行賦值想賦值只能

person1.name ="zhangsan"; 

person1.age =19  -----------------增長額外編碼  並且不知道Person內的屬性。

1.單純使用原型鏈完成對象建立,沒法對對象屬性進行賦值

2.沒法保證每一個對象的 屬性名 相同

因此要進行第二種第三種整合方式

4.構造原型組合模式  --最好的方式

構造原型組合模式:使用 構造函數 原型模式 組合完成對象建立。構造函數完成基本屬性的賦值,原型完成對象函數的綁定

//對象原型組合模式
        //經過構造函數 初始化對象,並賦值
        function Person( name, age){
            this.name=name;
            this.age=age;
        }
        //sayHello 等於一個匿名函數
        Person.prototype.sayHello = function(){
            console.log("名字:"+ this.name);     //this表明當前對象 Person
        }
        //在構建對象同時進行賦值
        var person1 = new Person( "Adad",18);      //person1 引用 Person
        var person2 = new Person( "Mada",18); 
        person1.sayHello();                          //誰調用 this就是誰 this爲 person1         person2.sayHello();

相關文章
相關標籤/搜索