js 基礎總結

  1. JavaScript 中的所有 字符 都是 16 byte 的。

  2. for in 語句會枚舉一個對象的所有屬性名(包括其原型的屬性),通過 Object.hasOwnProperty() 來確定這個屬性名是該對象的成員,還是來自原型鏈。

  3. JavaScript 里的對象是無類型的。對象是屬性的容器,其中每個屬性都擁有名字和值。 屬性名可以是包括空字符串在內的任意字符串。屬性的值可以是除了 undefined 值之外的任何值。

  4. JavaScript 的標識符中包含連接符(-)是不合法的,但允許包含下劃線(_)。所有如果使用 first-name 作屬性名,需要用引號括?。?first-name"。

  5. 嘗試從 undefined 的成員屬性中取值將會導致 TypeError 異常??梢酝ㄟ^ flight.equipment && flight.equipment.model 來避免。

  6. 所有通過對象字面量創(chuàng)建的對象都鏈接到 Object.prototype,它是 JavaScript 中的標配對象。

  7. 對象字面量產生的對象連接到 Object.prototype。函數對象連接到 Function.prototype (該原型對象本身連接到 Object.prototype)。每個函數在創(chuàng)建時會附加兩個隱藏屬性:函數的上下文和實現(xiàn)函數行為的代碼;一個 prototype 屬性:擁有 constructor 屬性且值為該函數的對象。

  8. 調用一個函數時,函數會接收兩個附加參數:this 和 arguments。this 的值取決于函數的調用模式。在 JavaScript 中一共有 4 種調用模式:

    1. 方法調用模式:當一個函數被保存為一個對象的一個屬性時,稱它為 方法。如果調用表達式包含一個提取屬性的動作(即包含一個 . 點表達式或 [] 下標表達式),那么它就是被當作一個方法來調用。
    2. 函數調用模式:當一個函數并非是一個對象的屬性時,那么它就是被當作一個函數來調用。
    3. 構造器調用模式:使用 new 來調用函數。(所有構造器函數都約定成首字母大寫的形式,并且不以首字母大寫的形式拼寫任何其他的東西)
    4. apply 調用模式:funcName.apply('函數被調用時所在的上下文', ['參數數組'])
  9. 函數可以通過 arguments 訪問所有它被調用時傳遞給它的參數列表,包括那些沒有被分配給函數聲明時定義的形式參數的多余參數。

  10. 閉包是一個函數,該函數可以訪問它被創(chuàng)建時所處的上下文環(huán)境。

  11. 級聯(lián):讓方法返回 this 就可以實現(xiàn)級聯(lián)。

  12. 記憶:函數可以將先前操作的結果記錄在某個對象里,從而避免無謂的重復運算。例如:

優(yōu)化前:

var fibonacci = function (n) {
    return n < 2 ? n : fibonacci (n-1) + fibonacci (n-2);
};

for (var i = 0; i <= 10; i++) {
    document.writeln('// ' + i + ':' + fibonacci (i));
}

優(yōu)化后:

var fibonacci = function () {
    var memo = [0, 1];
    var fib = function (n) {
        var result = memo[n];
        if( typeof result !== 'number') {
            result = fib (n -1) + fib (n - 2);
            memo[n] = result;
        }
        return result;
    }
    return fib;
}();
  1. JavaScript 沒有數組的數據結構。它提供了一種擁有一些類數組(array-like)特性的 對象。它把數組的下標轉變成字符串,作為屬性。它的屬性的檢索和更新方式和對象一樣,只不過多了一個可以用整數作為其屬性名的特性。

  2. typeof 運算符報告數組的類型是 object。一種判斷一個對象是否是數組的方法:Object.prototype.toString.apply(arr) === '[object Array']

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 概要 64學時 3.5學分 章節(jié)安排 電子商務網站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,851評論 0 3
  • 11、數據類型檢測與toString方法的理解 1,typeof value (檢測一個值的類型:原始類型或者引用...
    萌妹撒閱讀 932評論 0 0
  • (以下內容,參考自阮一峰es5) console.log(對象)時,頁面彈出的就是[object,Object] ...
    黑色的五葉草閱讀 241評論 0 0
  • 15、正則 正則就是一個規(guī)則,用來處理字符串的規(guī)則1、正則匹配編寫一個規(guī)則,驗證某個字符串是否符合這個規(guī)則,正則匹...
    萌妹撒閱讀 1,584評論 0 1
  • 希望每一位我正在教或者教過的同學都能認真看一看。也希望你們也能行動起來。找到自己該做的事情行動起來。
    淺藍深藍513閱讀 317評論 0 0

友情鏈接更多精彩內容