js物件建立及json
阿新 • • 發佈:2018-12-11
json就是javascript simple object notation的簡稱
使用json建立物件:
var ps=[ { name:"zs", age:23, friends:["A","B"], say:function(){ alert(this.name+","+this.age); } }, { name:"ls", age:24, friends:["C","D"], say:function(){ alert(this.name+","+this.age); } } ]; for(var i=0;i<ps.length;i++){ ps[i].say(); }
注意:(1).{name:"zs",age:23}表示一個物件,加到陣列[]裡面表示一組物件,var ps=[{name:"zs",age:23},{name:"ls",age:24}];
(2).結束要用;結束,{}裡面的最後一個屬性,不能再加逗號
使用工廠建立物件:
function createPerson(name,age){ var o=new Object(); o.name=name; o.age=age; o.say=function(){ alert(this.name+","+this.age); } return o; } var p1=createPerson('test',10); p1.say();
注意:(1).使用工廠建立物件,我們不能用typeof p1,只能測出Object,而用p1 instanceof也測不了
使用建構函式建立物件:
function Person(name,age){
this.name=name;
this.age=age;
this.say=function(){
alert(this.name+","+this.age);
}
}
var p1=new Person("q",5);
p1.say();
注意:(1).使用建構函式建立物件的缺點:建立每一個物件都存在方法的拷貝,如果建立的物件不需要這個方法,也存在方法拷貝,極大佔用記憶體空間
優化版建構函式建立物件:
function Person(name,age){
this.name=name;
this.age=age;
this.say=say;
}
function say(){
alert(this.name+","+this.age);
}
var p1=new Person("q",5);
p1.say();
注意:(1).把行為設定為全域性行為,這樣alert(p1.say==p2,say)提示的是true,表示都是每一個物件的行為都是同一塊空間,就不會佔用記憶體空間了,不過這樣的缺點是會被window呼叫,破壞物件的封裝性,而且如果物件有大量方法,就會使程式碼充斥大量的全域性函式,不利於開發