2018-12-21


對象的創(chuàng)建模式

Object構造函數(shù)來創(chuàng)建

用Object給構造函數(shù)創(chuàng)建的對象缺點:
1.組織形式不好(定義的對象結構中可以加入其它的語句,如:for循環(huán),if語句等)
2.沒有類型(全部都得用Object來定義)
3.內存開銷大
4.代碼冗余

 <script>
        /*
        使用Object給構造函數(shù)創(chuàng)建的對象的缺點:
        1.組織形式不好(定義的對象結構中可以加入其它的語句,如:for循環(huán),if語句等)
        2.沒有類型(全部都得用Object來定義)
        3.內存開銷大
        4.代碼冗余
        */
        var obj = new Object();
        obj.name = "siri";
        obj.age = 20;
        obj.eat = function(){
            console.log("葡萄");
        }

        var obj2 = new Object();
        obj.name = "tom";
        obj.age = 24;
        obj.eat = function(){
            console.log("牛排");
        }

--

字面量的形式創(chuàng)建對象

用字面量的形式來創(chuàng)建對象的缺點:
1.沒有類型
2.內存開銷大
3.代碼冗余
優(yōu)點:
組織形式比較友好

 <script>
       /*
       用字面量的形式來創(chuàng)建對象的缺點:
       1.沒有類型
       2.內存開銷大
       3.代碼冗余

        優(yōu)點:
        組織形式比較友好
        */
       var obj = {
           name:"siri",
           age:20,
           say:function(){
               console.log("小紅帽");
           }
       }

       var obj = {
           name:"tom",
           age:23,
           say:function(){
               console.log("大灰狼");
           }
       }
   </script> 

--

工廠模式來創(chuàng)建對象

使用工廠模式創(chuàng)建對象的缺點:
1.內存開銷大
2.沒有類型
優(yōu)點:
1.組織形式友好
2.代碼不冗余

 <script>
        /*
        使用工廠模式創(chuàng)建對象的缺點:
        1.內存開銷大
        2.沒有類型

        優(yōu)點:
        1.組織形式友好
        2.代碼不冗余
        */
        function creatObj(name, age, food) {
            return {
                name: "siri",
                age: 29,
                eat: function (food) {
                    console.log(food);
                }

            }
        }

        var obj1 = creatObj("siri", 20, "葡萄")
        var obj2 = creatObj("tom", 22, "土豆")
        console.log(obj1, obj2);

--

自定義構造函數(shù)來創(chuàng)建對象

使用自定義構造函數(shù)來創(chuàng)建對象的缺點:
內存開銷大
優(yōu)點:
1.組織形式比較友好
2.代碼不冗余
3.擁有類型

 <script>
            /*
          使用自定義構造函數(shù)來創(chuàng)建對象
            3. 內存開銷大        

             1. 組織形式比較友好
             2. 代碼不冗余
             3. 擁有類型
            */
        function Person(name, age) {
            this.name = name;
            this.age = age;
            this.eat = function (food) {
                console.log(food);
            }
        }

        var zs = new Person("張三", 20);  //this指向zs
        zs.eat("葡萄")
        var ls = new Person("李四", 19) //this指向ls
        ls.eat("米飯")
        console.log(zs instanceof Person, ls);
    </script>

--

自定義構造函數(shù)+原型鏈的形式創(chuàng)建對象

使用自定義構造函數(shù)+原型鏈的形式創(chuàng)建對象的優(yōu)點:
1.組織形式比較友好
2.代碼不冗余
3.擁有類型
4.內存開銷相對較小

 <script>
        /*使用自定義構造函數(shù)來創(chuàng)建對象     
         1. 組織形式比較友好
         2. 代碼不冗余
         3. 擁有類型
         4.內存開銷相對較小
        */

        Person.prototype.eat = function (food) {
            console.log(this.name+"吃"+food);
        }

        function Person(name, age) {
            this.name = name;
            this.age = age;
        }

        var zs = new Person("張三", 20);  //this指向zs
        zs.eat("葡萄")
        var ls = new Person("李四", 19) //this指向ls
        ls.eat("米飯")
    </script>

使用create()函數(shù)來創(chuàng)建對象

<script>
        /*
        使用create函數(shù)來創(chuàng)建對象
        */
        var obj = {}
        console.log(obj);
        //obj2 = Object.create(obj)會創(chuàng)建出一個對象,只是這個對象的隱式原型會被顯示的指定,指定為obj
        var obj2 = Object.create({a:"a"})
        console.log(obj2);
    </script>
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,632評論 1 32
  • 幾年前初次聽到大學好友提及“為你洗手作羹湯”之言,甚是喜歡,卻不知何故。后來查閱出處,有唐代詩人王建《新嫁娘詞》:...
    蒲生我池中閱讀 571評論 0 0
  • 今天與從成都特意過來廣州相遇的兄弟暢聊,從下午2點持續(xù)到晚上的11點,中間除了吃飯外,大家針對目前各自公司經營狀況...
    金銳煌一人力外包vs派遣閱讀 733評論 0 0
  • 秋雨打濕了它盛夏的美妝 卻給了它落葉的憂傷 冬風剪掉了它最后一片葉兒的黃 它裸露著 嘗盡了冬日里的薄涼 生長 還在...
    百木春深閱讀 192評論 0 1

友情鏈接更多精彩內容