js建立對象的多種方式及優缺點

來源:互聯網
上載者:User

標籤:實值型別   heron   toolbar   推薦   logs   this   hello   obj   聲明   

在js中,如果你想輸入一個的資訊,例如姓名,性別,年齡等,如果你用實值型別來儲存的話,那麼你就必須要聲明很多個變數才行,變數聲明的多了的話,就會造成變數汙染。所以最好的方式就是儲存到對象中。下面能我就給大家介紹幾種建立對象的方式,並且給大家說一下他們的優缺點

方式一:對象字面量

var obj={                name:"趙雲",                type:"突進",                skill:"搶人頭"            }

缺點:只能建立一次對象,複用性較差,如果要建立多個對象,代碼冗餘度太高

 

方式二:使用內建建構函式

var obj=new Object();                obj.name="李白";                obj.type="刺客";                obj.skill="舞劍";

 

缺點:只能建立一次對象,複用性較差,如果要建立多個對象,代碼冗餘度太高

方式三:原廠模式(不推薦使用)

function creat(name,type,skill){            var obj=new Object();                obj.name=name;                obj.type=type;                obj.skill=skill;                obj.say=function(){                    console.log("黃河之水天上來");                }                return obj;        }        var hero=creat("李白","刺客","寫詩");        var heroNext=creat("趙雲","突進","將軍");

 

缺點:對象無法識別,因為所有的執行個體都指向一個原型

方法四:建構函式模式

function Person(singer,song,type){            //預設吧this傳給new出來的對象,並且預設是返回該對象            this.singer=singer;            this.song=song;            this.type=type;        }        var obj=new Person("田馥甄","小幸運","流行歌");        console.log(obj);

注意點:1.如果不寫傳回值,預設返回的是新建立出來的對象 (一般都不會去寫這個return語句)

     2.如果我們自己寫return語句 return的是空值(return;),或者是基本類型的值或者null,都會預設返回新建立出來的對象

     3.如果返回的是object類型的值,將不會返回剛才新建立的對象,取而代之的是return後面的值

優點:執行個體時可以識別為一個特定的類型

缺點:建構函式中定義函數,那麼每次建立對象,都會重新建立該函數,這樣會導致全域變數增多,造成汙染,代碼結構會混亂,不易維護

方法五:原型

 function Person(name, age, gender) {            this.name = name;            this.age = age;            this.gender = gender;        }        var p =new Person("張學友",18,"male");        var p1 = new Person("劉德華",19,"male");        Person.prototype.sayHello = function () {            console.log("你好我是" + this.name);        }        Person.prototype["sing"] = function () {            console.log("一千個傷心的母牛");        }        p.sayHello();        p1.sayHello();        p.sing();        p1.sing();

優點:說明:建構函式的原型對象中的成員,可以被該建構函式建立出來的所有對象訪問,而且,所有的對象共用該對象,所以,我們可以將建構函式中需要建立的函數,放到原型對象中儲存,這樣就解決 全域變數汙染的問題 以及 代碼結構混亂的問題

js建立對象的多種方式及優缺點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.