一、可以動態添加對象屬性,可以動態刪除對象屬性
<script type="text/javascript">
var object=new Object();
object.username="zhangsan";
alert(object.username);
delete object.username;
alert(object.username);
</script>
二、定義對象最常見的方式
<script type="text/javascript">
var object={username:"zhangsan",password:123};
alert(object.username);
alert(object.password);
</script>
三、工廠方式
<script type="text/javascript">
function createObject(){
var object=new Object();
object.username="zhangsan";
object.password="123";
object.get=function(){
alert(this.username+","+this.password);
}
}
</script>
var obj1=createObject();
var obj2=createObject();
obj1.get();
帶參數的構造方法:
function createObject(username,password){
var object=new Object();
object.username=username;
object.password=password;
object.get=function(){
alert(this.username+","+this.password);
}
return object;
}
var object1=createObject("zhangsan","123");
object1.get()
讓一個函數對象被多個對象所共用,而不是每一個對象擁有一個函數對象:
function get(){
alert(this.username+","+this.password);
}
function createObject(username,password){
var object=new Object();
object.username=username;
object.password=password;
object.get=get;
return object;
}
var object1 =createObject("zhangsan","123");
var object2 =createObject("lisi","456");
object1.get();
object2.get();
四、建構函式方式:
function person(){
this.username="zhangsan";
this.password="123";
this.getInfo=function(){
alert(this.username+","+this.password);
}
}
var p1=new person();
p1.getInfo();
帶參數的構造方法:
function person(username,password){
this.username=username;
this.password=password;
this.getInfo=function(){
alert(this.username+","+this.password);
}
}
var p1=new person("zhangsan",2);
p1.getInfo();
五、原型方式(prototype)
function person(){
}
person.prototype.username=new Array();
person.prototype.password="123";
person.prototype.getInfo=function(){
alert(this.username+","+this.password);
}
var p1=new person();
var p2=new person();
p1.username.push("zhangsan");
p1.username.push("lisi");
p1.password="456";
p1.getInfo();
p2.getInfo();
單純使用原型方式無法為屬性賦初值,只能在對象產生後再去改變值
原型方式會共用屬性
六、使用原型+建構函式方式來定義對象(對象之間屬性互不干擾,共用同一個方法)
function person(){
this.username=new Array();
this.password="123";
}
person.prototype.getInfo=function(){
alert(this.username+","+this.password);
}
var p1=new person();
var p2=new person();
p1.username.push("zhangsan");
p2.username.push("lisi");
p1.getInfo();
p2.getInfo();
七、動態原型(在建構函式中通過標誌量讓所有對象共用一個方法,而每個對象擁有自己的屬性)
function person(){
this.username="zhangsan";
this.password="123";
if(typeof person.flag=="undefined"){
alert("invoked");
person.prototype.getInfo=function(){
alert(this.username+","+this.password);
}
person.flag=true;
}
}
var p=new person();
var p2=new person();
p.getInfo();
p2.getInfo();