JavaScript高級程序設計-筆記總結-1-6章

大致看過一遍紅寶書,想讓自己留下點東西。

script屬性

  • defer屬性,表示加載完dom後再解析js,只適應於外部js腳本。
  • async屬性:當前js腳本加載不必等其他腳本,不能保證異步正常展示。

外部js優點:

  • 可維護性
  • 可緩存:兩個頁面使用同一js,只要加載一次。

js語句的分號建議一直使用;;

數據類型

  • 基本:字符,數值,布爾(true和false區分大小寫),null,undefined
  • 引用類型:數組,對象
  • typeof temp或者typeof(temp) ty****peof null 返回object

3,14e2=314

數值

  • 特殊數值NaN:涉及的操作均爲NaN;與任何值不等,不等Nan
  • Number():null和空字符串–》0
  • parseInt(“124as”)空字符–》Nan
  • var num= Math.pow(5,2) //25

字符

  • num.toString(),num.String()
  • num.valueOf()返回數組形式
  • concat或者+: 拼接
  • str1.trim()

變量

  • 函數內定義的var temp變量,在函數外會被銷燬,而只定義temp作爲全局變量會保留;

不能重載,即函數覆蓋。
作用域鏈

  • 在執行環境中可以訪問相應的變量,函數外不能訪問函數內的,內可以訪問外的。

垃圾收集的策略

  • 標記清除:不使用的值加標記,離開執行環境即清除。
  • 引用計數:引用次數,歸0時清除。

數組item Array

  • 棧push pop
  • 隊列shift取出第一個,unshift末尾增加
  • reverse()反轉
  • color.slice(1),轉爲拼接字符串
  • num.indexOf(6) 返回下標或-1
  • splice()刪除,插入,替換
  • filter()過濾,括號內+條件-》
  • map(function(){})數組值轉換
  • reduce(function)迭代累加

正則表達式

  • var patten1 = /[cb]at/i; //匹配第一個包含cat和bat的字符
  • var patten2 = /{cb}at/i; {cb}at
  • var jiewei=/.doc/gi;

函數內置屬性

  • arguement.callee: 消除緊密藕合,即,在別處也可使用該函數(遞歸調用後,可以繼續使用)
  • this,函數在全局作用域運行時,this=window

eval()內的變量或函數都不會提升

創建對象(五種方式)

  • 工廠模式:函數內創建對象,最後return 對象。使用時var person= createPerson(‘hzx’,29)
  • 構造函數:函數內使用this,無需return。使用時var person = new creatPerson()
  • **原型模式: prototype所有成員共享屬性和方法,各自實例可以修改自己的值。**存在問題:兩個實例共享的原型,屬性值是引用類型時,該值會被共享。2、

function Person {
person.prototype.name=name }

  • 組合使用構造函數和原型:構造函數定義實例,原型定義共享的屬性和方法
  • 動態原型:屬性和方法,在方法中使用prototype

原型鏈理解

  • 一個原型對象A(包括屬性和方法)被另一個原型B繼承,B可以使用A的屬性和方法。
  • B.prototype= new A()
  • 存在問題:1、引用類型的屬性值會共享 2、無法向原型A中傳參。解決方法(借用構造函數和組合繼承)

借用構造函數

  • 使用call()和apply(): 子構造函數中,funA{ funA.call(this)}

組合繼承(使用最多)

  • 使用原型鏈實現原型的屬性和方法繼承
  • 借用構造繼承實例的屬性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章