日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

精读《javascript高级程序设计》笔记二——变量、作用域、内存以及引用类型

發布時間:2024/1/17 javascript 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 精读《javascript高级程序设计》笔记二——变量、作用域、内存以及引用类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

變量、作用域和內存問題

  • 執行環境共有兩種類型——全局和局部
  • 作用域鏈會加長,有兩種情況:try-catch語句的catch塊,with語句.
  • javascript沒有塊級作用域,即在if,for循環中的變量,在塊結束后,并不會被銷毀.
  • 最好能手工斷開原生javascript對象與DOM元素之間的連接。
  • Object類型

  • 創建Object實例有兩種方式:new 操作符后跟Object構造函數即new Object(),對象字面量表示法即用{}表示。
  • 可使作方括號表示法來訪問對象的屬性,將要訪問的屬性以字符串的形式放到方括號內。
  • 方括號訪問對象的屬性,可以通過變量來訪問

    var propertyName = "name"; alert(person[propertyName]);

    屬性名包含會導致語法錯誤的字符,也可以使用方括號

  • Array類型

  • 創建Object實例有兩種方式:new 操作符后跟Array構造函數即new Object(),對象字面量表示法即用[]表示。
  • 與對象相同,調用字面量的方式來創建數組時,不會調用數組的構造函數
  • 檢測數組:value instanceof Array
  • Array.isArray(value)支持IE9+……
  • 數組的toString()方法返回數組每個值字符串形式拼接而成的一個以逗號為字符串分隔的字符串;調用valueOf()返回的還是數組
  • 用push()和pop()來模擬棧方法,用push()和shift()來模擬隊列方法
  • concat()方法,會創建一個副本,將接收到的參數添加到副本的末尾,原數組并沒有進行改變
  • slice()接收一個參數,返回從指定位置至末尾的所有項,如果兩個參數,返回指定開始位置至結束位置的項,不包括結束位置。另外slice()方法同樣不會影響原數組.
  • splice()方法
    刪除2個參數要刪除第一項位置,要刪除項數,例splice(0,2)
    插入3+個參數起始位置,0(要刪除項數),要插入的項,例splice(2,0,"red","yellow")
    替換3+個參數起始位置,要刪除項數,要插入的項,例splice(2,1,"red","yellow")
  • 迭代方法
    every()對數組的每一項運行給定函數,如果每一項都返回true,則返回true
    filter()對數組的每一項運行給定函數,返回該函數會返回true的項組成的數組
    forEach()對數組的每一項運行給定函數,該函數沒有返回值
    map()對數組的每一項運行給定函數,返回每次調用結果返回的數組
    some()對數組的每一項運行給定函數,如果該函數對任一項返回true,則返回true

    支持迭代方法需IE9+

  • 縮小方法values.reduce(function(prev,cur,index,array){});同樣需IE 9+
  • Date類型

  • UTC創建的時間:var allFives = new Date(Date.UTC(2005,4,5,17,55,55,55)),本來按書中說的,應當是2005年5月5日下午5點55分55秒,但我運行時的時間是2005年5月6日1點55分55秒,原因是我所在的時區為東8區,又加了8時
  • var allFives = new Date(2005,4,5,17,55,55,55);創建的時間可以得到對應的結果。
  • Date.now()支持的瀏覽器為IE9+
  • 在不支持now()方法的瀏覽器中,可用如下方法統計兩段代碼之間所用時間 var start = +new Date();doSomething……var end = +new Date(); console.log(end-start);
  • 日期格式化方法
    toDateString()以特定于現實的時間格式顯示星期幾、月、日、年
    toTimeString()以特定于現實的時間格式顯示時、分、秒、時區
    toLocaleDateString()以特定于地區的時間格式顯示星期幾、月、日、年
    toLocaleTimeString()以特定于現實的時間格式顯示時、分、秒
    toUTCString()以特定于現實的格式完整的UTC日期
  • 正則表達式

  • 正則表達式:var expression = /pattern/flags;
  • flags有三種:g是全局,i表不區分大小寫,m表示多行匹配
  • RegExp實例屬性
    global布爾值,是否設定g標志
    ignoreCase布爾值,是否設定i標志
    lastIndex整數,表示開始搜索下一個匹配項的字符位置,從0算起
    multiline布爾值,是否設定m標志
    source正則表達式的字符串表示,按照字面量形式而非傳入構造函數中的字符模式返回
  • 正則表達式構造函數屬性 長屬性名短屬性名說明
    input$_最近一次要匹配的字符串,Opera未實現
    lastMatch$&最近一次的匹配項,Opera未實現
    lastParen$+最近一次匹配的捕獲組,Opera未實現
    leftContext$`input字符串中lastMatch之前的文本
    multiline$*布爾值,表示是否使用多行模式,IE和Opera都未實現
    rightContext$'input字符串中lastMatch之后的文本
  • 正則表達式的方法var matches = pattern.exec(text)【返回結果集】和 pattern.test(text)【返回true 、false】。
  • String類型的text.match(pattern)方法與pattern.exec(text)相同
  • Function類型

  • arguments.callee()即調用當前函數,嚴格模式不支持該方法
  • this引用的時函數據以執行的函數對象
  • caller這個函數保存著調用當前函數的引用,如果是在全局變量中調用當前函數,返回為null
  • 每個函數都包含兩個屬性:length和prototype,其中length表示希望接收的命名參數的個數
  • String類型

  • replace()方法的第二個參數可以是一個函數,在只有一個匹配項的情況下,會傳遞三個參數:模式的匹配項、模式匹配在字符串中的位置和原始字符串 function htmlEscape(text){return text.replace(/[<>"&]/g,function(match,pos,originalText){switch(match){case "<":return "<";case ">":return ">";case "&":return "&";case "\"":return """;}});}
  • 字符串與匹配模式相關的幾個方法有:match(),search(),replace(),split()都可以傳入正則表達式.
  • Math對象

  • 求近似值的方法:ceil(),round(),floor()
  • 從某個整數范圍內隨機選擇一個值的方法: 值 = Math.floor(Math.random()*可能值的總數+第一個可能值)
  • 轉載于:https://www.cnblogs.com/mid-summer/p/3972629.html

    總結

    以上是生活随笔為你收集整理的精读《javascript高级程序设计》笔记二——变量、作用域、内存以及引用类型的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。