1. 程式人生 > >js物件建立及json

js物件建立及json

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呼叫,破壞物件的封裝性,而且如果物件有大量方法,就會使程式碼充斥大量的全域性函式,不利於開發