Javascript語言精粹

來源:互聯網
上載者:User

標籤:

檢索

檢索一個並不存在的成員屬性的值,將返回undefined

flight.status  //undefined

  || 運算子可以用來填充預設值

var status = flight.status || "unknown";

  嘗試從undefined的成員屬性中取值,將會報錯TypeError。這時可以通過&&運算子來避免錯誤

flight.equipment  //undefinedflight.equipment.model  //Throw "TypeError"flight.equipment && flight.equipment.model  //undefined

  

引用

對象通過引用來傳遞。他們永遠不會被複製。

var a = {}, b = {}, c = {}; //a,b,c每個都引用一個不同的Null 物件var a = b = c = {};  //a,b,c都引用同一個Null 物件

  

原型

如果我們嘗試去擷取對象的某個屬性值,但該對象並沒有此屬性名稱,那麼Javascript會試著從原型對象中擷取屬性值。

如果哪個原型對象也沒有該屬性,那麼再從它的原型中尋找。以此類推,直到最後到達終點 Object.prototype

如果想要的屬性完全不存在於原型鏈中,那麼結果就是undefined值。

這個過程稱為委託

 

反射

//反射機制指的是程式在運行時能夠擷取自身的資訊。
//如:一個對象能夠在運行時知道自己有哪些方法和屬性。

檢查對象並確定對象有什麼屬性是很容易的事情。

typeof操作符對確定屬性的類型很有協助:

typeof flight.number //‘number‘typeof flight.status  //‘string‘typeof flight.manifest  //‘undefined‘

  注意原型鏈中的任意屬性都會產生值:

typeof flight.toString  //‘function‘typeof flight.constructor  //‘function‘

有兩種方法去處理這些不需要的屬性:

第一個是檢查並丟棄值為函數的屬性。

第二種是使用hasOwnProperty方法:

如果對象擁有專屬的屬性,它將返回true,hasOwnProperty方法不會檢查原型鏈。

flight.hasOwnProperty(‘number‘);  //trueflight.hasOwnProperty(‘constructor‘);  //false

 

枚舉

for in 語句可以枚舉所有的屬性——包括函數和原型中的屬性。最好用for代替之。

以特定順序枚舉對象的屬性:

var i;var properties = [    ‘first-name‘,    ‘middle-name‘,    ‘last-name‘,    ‘profession‘];for(i=0; i<properties.length; i++){    document.writeln(properties[i] + ":" +                      another_stooge[properties[i]]);}

  

 

Javascript語言精粹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.