JS創建對象的幾種方式詳解
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創建對象的幾種方式詳解