在JS中,建立對象(Create Object)並不完全是我們時常說的建立類對象,JS中的對象強調的是一種複合類型,JS中建立對象及對對象的訪問是極其靈活的。
JS對象是一種複合類型,它允許你通過變數名儲存和訪問,換一種思路,對象是一個無序的屬性集合,集合中的每一項都由名稱和值組成(聽起來是不是很像我們常聽說的HASH表、字典、健/值對。),而其中的實值型別可能是內建類型(如number,string),也可能是對象。
一、由一對大括弧括起來 var emptyObj = {};
var myObj =
{
' id ' : 1 , // 屬性名稱用引號括起來,屬性間由逗號隔開
' name ' : ' myName '
};
// var m = new myObj(); //不支援 不知你注意到對象都是用 var 聲明的沒有,像上面的代碼,就只是簡單的聲明一個對象,它只有一份拷貝,你不能像執行個體化類對象一樣對它採用new操作,像上面代碼的注釋部分。這樣就極大的限制了對象的重用,除非你建立的對象只需要一份拷貝,否則考慮用其他方法建立對象。 下面一起看看如何訪問對象的屬性和方法。 var myObj =
{
' id ' : 1 ,
' fun ' : function () {
document.writeln( this .id + ' - ' + this .name); // 以"對象.屬性"方式訪問
},
' name ' : ' myObj ' ,
' fun1 ' : function () {
document.writeln( this [ ' id ' ] + ' + ' + this [ ' name ' ]); // 以集合方式訪問
}
};
myObj.fun();
myObj.fun1();
// 結果
// 1-myObj 1+myObj 二、用 function 關鍵字類比 class 在 function 中用 this 引用當前對象,通過對屬性的賦值來聲明屬性。如果用var聲明變數,則該變數為局部變數,只允許在類定義中調用。 function myClass() {
this .id = 5 ;
this .name = ' myclass ' ;
this .getName = function () {
return this .name;
}
}
var my = new myClass();
alert(my.id);
alert(my.getName());
// 結果
// 5
// myclass 三、在函數體中建立一個對象,聲明其屬性再返回 在函數體中建立對象可利用第一點的方法,或先 new Object(); 再為各屬性賦值。 不過用這種方式建立的對象在VS2008 SP1中是沒有智能提示的。 function myClass() {
var obj =
{
' id ' : 2 ,
' name ' : ' myclass '
};
return obj;
}
function _myClass() {
var obj = new Object();
obj.id = 1 ;
obj.name = ' _myclass ' ;
return obj;
}
var my = new myClass();
var _my = new _myClass();
alert(my.id);
alert(my.name);
alert(_my.id);
alert(_my.name);
// 結果
// 2
// myclass
// 1
// _myclass 分類: JavaScript