1. 程式人生 > >js物件宣告方式

js物件宣告方式

在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() {
                
returnthis.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 複製程式碼

四.建立物件陣列的方式

1.物件的定義

[javascript] view plain copy
  1.   Function Object(屬性表){  
  2.     This.prop1=prop1   
  3.     This.prop2=prop2  
  4.     ...  
  5.     This.meth=FunctionName1;  
  6.     This.meth=FunctionName2;  
  7. }  
舉一個大學的例子: [javascript] view plain copy
  1. function university(name,city,createDate,URL){  
  2.     This.Name=Name;   
  3.     This.city=city;  
  4.     This.createDate=New Date(creatDate);  
  5.     This.URL=URL;  
  6.     This.showuniversity=showuniversity;  
  7.   }  
  8. //  其中This.showuniversity就是定義了一個方法---showuniversity()。
  9.   //  而showuniversity()方法是實現university物件本身的顯示。
  10.     function showuniversity(){  
  11.     For (var prop inthis)   
  12.     alert(prop+="+this[prop]+"");  
  13. }  


2.將物件加入物件陣列中 建立物件的陣列的方式有: [javascript] view plain copy
  1. var mycars=new Array()  
  2. mycars[0]="Saab"
  3. mycars[1]="Volvo"
  4. mycars[2]="BMW"
  5. var mycars=new Array("Saab","Volvo","BMW");  

將大學物件加入陣列 [javascript] view plain copy
  1.  U1=New university(“山西省”,“太原市”,"January 05,199712:00:00"," www.shanxiwindow.net ")  
  2.     U2=New university(“山西省網路管理中心”,“太原”,"January 07,1997 12:00:00","htlp://www.shanxiwindow.net")  
  3. var universitys = new Array(U1, U2);  

參考:1.http://www.cnblogs.com/lucas/archive/2009/03/17/1411656.html     2.http://hi.baidu.com/niewg/item/83250c2d4a43a23295f62b3a             3.http://www.w3school.com.cn/js/js_obj_array.asp