1. 程式人生 > >js創建對象的多種方式及優缺點

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

並且 .so 姓名 cti function 聲明 構造函數 return語句 註意點

在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創建對象的多種方式及優缺點