1. 程式人生 > >JS創建對象的幾種方式詳解

JS創建對象的幾種方式詳解

演員 sta say object ron 操作 tar obj 構造

Js是一門面向對象的語言,裏面沒有類的思想,所以直接是創建對象,下面介紹幾種創建對象的方法:

1.對象字面量的方法:記住鍵值對格式:{key:value,key :value}

實例:

Var obj={name:”演員”,move:”長城”,age:”18”}

如果想再創建一個新的對象,只能重復上面的操作,所以可操作性差,不能被重復使用,造成的直接後果就是代碼的冗余度很高

2使用內置的構造函數 object

Var obj=new Object();

Obj.name=”梁朝偉”;

Obj.movie=”赤壁“;

Obj.age=”38”;

如果我們想在定義一個新的對象,該段代碼的缺點顯而易見了

3.封裝一個工廠函數來解決上述的問題

function createStar(name,movie ,age){

var o=new Object();

o.name=name;

o.movie=movie;

o.age=age;

o.say=function(){

console.log(“我是”+this.name);

}

return o;

}

var obj=createStar(“”,””,28);

var obj1=createStar(“”,””,38);

4.自定義構造函數

//什麽是構造函數?
//構造函數其實也是函數,但是通常用來初始化對象


//並且和new關鍵字同時出現

function Person(){
this.name="憨力";
this.age=28;
this.say=function(){
alert("我是"+this.name);
}
}

var p=new person();

也就是可以進行傳值,此時this指向的就是p對象

遇到的問題1

如果person(),被當成普通的函數執行,就會遇到一個問題,this的指向會是windows

遇到的問題2

每創建一個新的對象,函數say就會被調用一次,這樣就造成了函數被多次調用,造成了系統資源的極大欄廢

如果在在構造函數之外創建一個函數呢?

:function say(){

alert(“”);

}

把上面的函數改成有參數的函數

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

var pp=new Person(“”,””,say);

但是又會造成新的問題;全局變量的汙染,怎麽解決呢?就涉及到原型的問題了。

預知後文如何,且聽以後的分解吧!

JS創建對象的幾種方式詳解