javascript定義對象

來源:互聯網
上載者:User

一、可以動態添加對象屬性,可以動態刪除對象屬性

<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();

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.