做爲一個前端的學習者,以前因爲時間趕且懶的特性,沒有好好的學習一下js的特性,只看了w3cschool的基礎教程,知道語法後就用起了jQuery框架,js的不少基礎徹底沒有接觸理解。 這段時間瞭解到,js基礎仍是要好好學,對之後找工開發都有好處。<br> 進入正題,一下大部分是書上的東西,只是想看過一遍後,本身再過一遍加深理解。<br> 第一章是說明js的背景,略。<br> 第二章是js基礎語法,略之。<br>前端
對象的定義使用花括號正則表達式
<!-- lang: js --> var stooge = {"first_name":"Jerome","last_name":"Howard"};
訪問對象能夠經過兩種方式,優先考慮.的表示方法,由於緊湊,可讀性好數組
<!-- lang: js --> stooge["first_name"]; stooge.first_name;
經過賦值語句來更新。若是以前沒那個對象名,就會直接擴充到已有對象中。框架
<!-- lang: js --> stooge["first_name"] = "gao" stooge.first_name = "gao";
對象經過引用來傳遞,他們永遠不會被複制。函數
<!-- lang: js --> var a = {};var b = {};var c = {};//這是3個不一樣的空對象 var a = b = c = {};//a,b,c都引用同一個對象
每一個對象對鏈接到一個原型對象,而且它能夠從中繼承屬性,全部經過對象字面量建立的對象都鏈接到Object .prototype。 原型鏈接在更新值的時候是不會更改到該對象的原型的,原型鏈接只有在檢索值的時候纔會被用到,當咱們嘗試去獲取對象的屬性值的時候,若是沒有,js會試着從原型對象中獲取屬性值。若是沒有,再從它的原型找,直到到達終點Object.prototype。若是仍是不存在於原型鏈中,則返回undefined。這個過程叫委託。學習
<!-- lang: js --> var flight.equipment = { airline:"Oceanic", number:815, departure:{ IATA:"SYD", time:"2004-09-22 14:55", city:"Sydney" }, arrivak:{ IATA:"LAX", time:"2004-09-23 10:42", city:"Sydney" } }; if(typeof Object.beget !== 'function') { Object.create = function (o) { var F = function () {}; F.prototype = o; return new F(); }; } var another_flight = Object.create(flight); another_flight['airline'];//"Oceanic" flight.id = 10086; another_flight['id'];//10086
檢查對象並肯定對象有什麼屬性ui
<!-- lang: js --> typeof flight.number;//"number" typeof flight.status;//"undefined" typeof flight.id;//"number"
hasOwnProperty方法則不會檢查原型鏈prototype
<!-- lang: js --> flight.hasOwnProperty('number');//true another_flight.hasOwnProperty('number');//false
使用 for in 語句,可用hasOwnProperty方法作過濾器,以及typeof來排除函數。 屬性名的出現順序是不肯定的,能夠先把知道的屬性名保存在一個數組中,順尋排好,而後經過一個循環獲得按照順序排列的屬性值。code
<!-- lang: js --> var i; var properties = {'airline','number','departure','arrivak'}; for (i = 0;i < properties.length; i += 1){ document.writeln(properties[i] + ':' + another_flight[properties[i]]); } //airline:Oceanic number:815 departure:[object Object] arrivak:[object Object]
刪除對象的屬性可能會讓來自原型鏈中的屬性透露出來對象
<!-- lang: js --> another_flight.number = 1000; another_flight.number; //1000 delete another_flight.number; another_flight.number;//815
最小化使用全局變量的方法之一就是爲應用只建立一個惟一的全局變量
<!-- lang: js --> var MYAPP = {}; MYAPP.stooge = { "id":10101, "number":1038 }
此時,該變量變成了應用的容器。