成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript高級(jí)程序設(shè)計(jì)-摘要筆記-1

chavesgu / 1835人閱讀

摘要:說(shuō)明此摘要筆記系列是我最近看高級(jí)程序設(shè)計(jì)第版隨手所記。摘要筆記本身沒(méi)有系統(tǒng)性,沒(méi)有全面性可言,寫(xiě)在這里供有一定基礎(chǔ)的前端開(kāi)發(fā)者參考交流。對(duì)每一項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)會(huì)返回的項(xiàng)組成的數(shù)組。是的反操作是的反操作第一部分結(jié)束。

說(shuō)明:

此摘要筆記系列是我最近看《JavaScript高級(jí)程序設(shè)計(jì)(第3版)》隨手所記。

里面分條列舉了一些我認(rèn)為重要的、需要記下的、對(duì)我有幫助的點(diǎn),是按照我看的順序來(lái)的。

摘要筆記本身沒(méi)有系統(tǒng)性,沒(méi)有全面性可言,寫(xiě)在這里供有一定基礎(chǔ)的前端開(kāi)發(fā)者參考交流。

里面的知識(shí)點(diǎn)、例子大部分來(lái)源于本書(shū),或者延伸出來(lái)的,都經(jīng)過(guò)我的測(cè)試是對(duì)的,但是沒(méi)辦法保證100%正確,如果有人看到錯(cuò)誤的地方,希望指出來(lái),謝謝。

正文:

1、數(shù)組檢測(cè)方法:
1. value instanceof Array  // true / false
2. Array.isArray(value)  // true / false, 支持的瀏覽器 IE 9+,F(xiàn)irefox 4+, Safari 5+, Opera 10.5+, Chrome
2、棧和隊(duì)列

棧是一種 LIFO(Last-In-First-Out后進(jìn)先出) 的數(shù)據(jù)結(jié)構(gòu)。在數(shù)組中表現(xiàn)為 push() pop() 方法
隊(duì)列數(shù)據(jù)結(jié)構(gòu)的訪問(wèn)規(guī)則是 FIFO(First-In-First-Out) ,在數(shù)組中表現(xiàn)為 push() shift() 方法

3、數(shù)組的 sort() 會(huì)對(duì)每一項(xiàng)調(diào)用 toString() 方法,所以是按照字符串來(lái)排序的,可以傳一個(gè)函數(shù)作為參數(shù)來(lái)解決這個(gè)問(wèn)題,如下:
function compare (value1, value2) {
  if (value1 < value2) {
    return -1
  } else if (value1 > value2) {
    return 1
  } else {
    return 0
  }
}

或者

function compare (value1, value2) {
  return value1 - value2
}
values.sort(compare)

得到從小到大的升序排列

4、數(shù)組的 slice() 方法,如果參數(shù)中有負(fù)數(shù),則用數(shù)組長(zhǎng)度加上該數(shù)來(lái)確定相應(yīng)的位置,如果結(jié)束位置小于起始位置,則返回空數(shù)組
數(shù)組的 splice() 方法始終會(huì)返回一個(gè)數(shù)組
5、數(shù)組的 indexOf() lastIndexOf() 方法采用全等方法來(lái)查找項(xiàng),返回查找到的項(xiàng)的索引,如果找不到返回 -1
// 支持的瀏覽器 IE 9+,F(xiàn)irefox 2+, Safari 3+, Opera 9.5+, Chrome
6、數(shù)組的迭代方法總結(jié):

每個(gè)方法都接受兩個(gè)參數(shù), 1. 在每一項(xiàng)上運(yùn)行的函數(shù),2. 運(yùn)行該函數(shù)的作用域?qū)ο蟆绊?this 的值(可選)
傳入的函數(shù)會(huì)接受三個(gè)參數(shù),數(shù)組項(xiàng)的值、索引、該數(shù)組

1. every() // 對(duì)每一項(xiàng)運(yùn)行給定函數(shù),如果每一項(xiàng)都返回true,則返回true。
2. filter() // 對(duì)每一項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)會(huì)返回true的項(xiàng)組成的數(shù)組。
3. forEach() // 對(duì)每一項(xiàng)運(yùn)行給定函數(shù),沒(méi)有返回值。
4. map() // 對(duì)每一項(xiàng)運(yùn)行給定函數(shù),返回每一項(xiàng)調(diào)用的結(jié)果組成的數(shù)組。
5. some() // 對(duì)每一項(xiàng)運(yùn)行給定函數(shù),如果有一項(xiàng)返回true,則返回true。
// 支持的瀏覽器 IE 9+,F(xiàn)irefox 2+, Safari 3+, Opera 9.5+, Chrome
7、歸并方法 reduce() reduceRight() // reduce()是從頭部開(kāi)始遍歷,reduceRight()是從尾部開(kāi)始遍歷,其它都一樣

// 這兩個(gè)方法都接受兩個(gè)參數(shù),一個(gè)是在每一項(xiàng)上調(diào)用的函數(shù),一個(gè)是作為歸并基礎(chǔ)的初始值(可選),
// 傳入的函數(shù)接受四個(gè)參數(shù),前一個(gè)值、當(dāng)前值、索引、數(shù)組對(duì)象,這個(gè)函數(shù)返回的任何值都會(huì)作為第一個(gè)參數(shù)傳給下一項(xiàng)
// 注意:如果傳遞了第二個(gè)參數(shù),即歸并的初始值,那么函數(shù)會(huì)從數(shù)組第一項(xiàng)開(kāi)始遍歷,如果不傳則把第一項(xiàng)作為初始值直接從第二項(xiàng)開(kāi)始遍歷

8、關(guān)于函數(shù)

函數(shù)實(shí)際上是對(duì)象,所以每個(gè)函數(shù)都是Function類型的實(shí)例,而且和其它引用類型一樣具有屬性和方法。
由于函數(shù)是對(duì)象,因此函數(shù)名實(shí)際上是指向一個(gè)函數(shù)對(duì)象的指針,不會(huì)與某個(gè)函數(shù)綁定。

9.函數(shù)兩種定義方式:

區(qū)別在于函數(shù)聲明提升。

a.函數(shù)聲明:

  function sum (n1, n2) {
    return n1 + n2
  }

b.函數(shù)表達(dá)式:

  var sum = function (n1, n2) {
    return n1 + n2
  }
10.函數(shù)可以作為參數(shù)傳給另一個(gè)函數(shù),可以從一個(gè)函數(shù)中返回另一個(gè)函數(shù),如:
function createComparisonFunction (propertyName) {
  return function (obj1, obj2) {
    var value1 = obj1[propertyName]
    var value2 = obj2[propertyName]

    if (value1 < value2) {
      return -1
    } else if (value1 > value2) {
      return 1
    } else {
      return 0
    }
  }
}

var data = [{
  name: "ZhangSan",
  age: 18
}, {
  name: "Nicholas",
  age: 19
}]
data.sort(createComparisonFunction("name"))
11. 函數(shù)內(nèi)部屬性

?在函數(shù)內(nèi)部有兩個(gè)特殊對(duì)象, arguments、this。
arguments 有一個(gè)名叫 callee 的屬性,是一個(gè)指針,指向擁有這個(gè) arguments 對(duì)象的函數(shù),
應(yīng)用如下:
求階乘:

  function factorial (n) {
    if (n <= 1) {
      return 1
    } else {
      return n * arguments.callee(n - 1)
    }
  }

this 指執(zhí)行這個(gè)函數(shù)的環(huán)境對(duì)象
es5 規(guī)范化了另一個(gè)函數(shù)對(duì)象的屬性 caller,這個(gè)屬性保存著調(diào)用當(dāng)前函數(shù)的函數(shù)的引用,如果在全局作用域中則為null,如:

  function outer () {
    inner()
  }
  function inner () {
    alert(inner.caller)  // 顯示 outer 函數(shù)的源代碼
  }

或者:

function outer () {
  inner()
}
function inner () {
  alert(arguments.callee.caller)  // 顯示 outer 函數(shù)的源代碼
}
12. 函數(shù)的屬性和方法
每個(gè)函數(shù)都包含兩個(gè)屬性,length和prototype。
length表示函數(shù)希望接受的參數(shù)的個(gè)數(shù),prototype是保存所有實(shí)例方法的真正所在

每個(gè)函數(shù)都包含兩個(gè)非繼承過(guò)來(lái)的方法,call()和apply(),作用都是在特定的作用域中調(diào)用函數(shù),實(shí)際上等于設(shè)置函數(shù)體內(nèi)this指針的值
apply() 接受兩個(gè)參數(shù),一個(gè)是在其中運(yùn)行的作用域,一個(gè)是包含所有參數(shù)的數(shù)組,可以是 Array 的實(shí)例,也可以是 arguments 對(duì)象
call() 第一個(gè)參數(shù)同 apply(), 之后把所有參數(shù)直接傳遞給函數(shù),如:

  window.color = "red"
  var o = {
    color: "blue"
  }
  function sayColor () {
    alert(this.color)
  }
  sayColor() // "red"
  sayColor.call(this) // "red"
  sayColor.call(window) // "red"
  sayColor.call(o) // "blue"

es5 定義了 bind() 方法,這個(gè)方法會(huì)創(chuàng)建一個(gè)函數(shù)的實(shí)例,其this值會(huì)被綁定到傳給 bind() 函數(shù)的值,如:

window.color = "red"
var o = {
  color: "blue"
}
function sayColor () {
  alert(this.color)
}
var objSayColor = sayColor.bind(o)
objSayColor() // "blue"
// 支持的瀏覽器 IE 9+,F(xiàn)irefox 4+, Safari 5.1+, Opera 12+, Chrome
13. num.toString(n) // 該方法返回幾進(jìn)制數(shù)值的字符串形式,如:
var num = 10
num.toString() // "10"
num.toString(10) // "10"
num.toString(2) // "1010"
num.toString(8) // "12"
num.toString(16) // "a"

num.toFix(n) // 該方法將按照指定的小數(shù)位返回?cái)?shù)值的字符串表示,如:
var num = 10
num.toFix(2) // "10.00"
// 如果數(shù)值本身比指定的小數(shù)位多,在現(xiàn)代瀏覽器上則按照四舍五入的辦法來(lái)處理
num.toExponential(n) // 表示用指數(shù)表示法(也稱e表示法)來(lái)把數(shù)值按指定的位數(shù)來(lái)轉(zhuǎn)化成字符串形式,如:
var num2 = 10.1234
num2.toExponential(4) // "1.0123e+1"
14. String 類型的每個(gè)實(shí)例都有 length 屬性,注意,即使有雙字節(jié)字符,每個(gè)字符也只算一個(gè)字符,計(jì)算長(zhǎng)度的時(shí)候算1,如:
var str = "哈哈"
str.length // 2
15. 字符方法:charAt() charCodeAt() // 這兩個(gè)方法都接受一個(gè)基于0的字符位置的參數(shù),前者返回對(duì)應(yīng)字符,后者返回對(duì)應(yīng)字符的字符編碼,如:
var stringValue = "hello world"
stringValue.charAt(1) // "e"
stringValue.charCodeAt() // 101 // 數(shù)值類型
// es5 定義了 方括號(hào)加數(shù)字索引來(lái)訪問(wèn)特定字符的方法,如:
stringValue[1] // "e"
// 支持的瀏覽器 IE 8+,F(xiàn)irefox , Safari , Opera , Chrome
16. 字符串操作方法
str.concat() // 類似于 + 號(hào)拼接字符串,可以傳遞多個(gè)參數(shù),返回新的把str和所有參數(shù)拼接在一起的字符串
slice() substring() substr() // 這三個(gè)都是會(huì)返回被操作字符串經(jīng)過(guò)分割得到的新字符串,接受一個(gè)或兩個(gè)參數(shù),第一個(gè)參數(shù)指定分割開(kāi)始位置,
 // slice() substring() 的第二個(gè)參數(shù)指定分割結(jié)束位置,不包括該位置的字符串,substr() 第二個(gè)參數(shù)指返回的字符個(gè)數(shù)。
 // 如果沒(méi)有給定第二個(gè)參數(shù),則將字符串的長(zhǎng)度作為結(jié)束位置,如:
var stringValue = "hello world!"
stringValue.slice(3) // "lo world!"
stringValue.substring(3) // "lo world!"
stringValue.substr(3) // "lo world!"

stringValue.slice(3, 7) // "lo wo"
stringValue.substring(3, 7) // "lo wo"
stringValue.substr(3, 7) // "lo worl"
 // 如果傳入的參數(shù)為負(fù)值,三個(gè)方法處理情況不相同:slice() 把兩個(gè)負(fù)參數(shù)都跟字符串長(zhǎng)度相加,substring() 把兩個(gè)負(fù)參數(shù)都轉(zhuǎn)化成0,
 // substr() 把第一個(gè)參數(shù)跟字符串長(zhǎng)度相加,第二個(gè)參數(shù)轉(zhuǎn)化成0
17. 字符串位置方法:indexOf() lastIndexOf() // 這兩個(gè)方法都是從一個(gè)字符串中搜索給定的子字符串,然后返回子字符串的位置(沒(méi)找到,則返回 -1)

// 這兩個(gè)方法的區(qū)別在于,一個(gè)從前向后搜索子字符串,一個(gè)從后向前搜索子字符串,如:

var stringValue = "hello world"
stringValue.indexOf("o") // 4
stringValue.lastIndexOf("o") // 7

// 這兩個(gè)方法都可以接受第二個(gè)參數(shù),表示從字符串中的哪個(gè)位置開(kāi)始搜索,包括指定的位置,如以下方法通過(guò)循環(huán)調(diào)用找到所有匹配的子字符串:

function getAllStr (str1, str2) {
  var positions = []
  var pos = str1.indexOf(str2)
  while (pos > -1) {
    positions.push(pos)
    pos = str1.indexOf(str2, pos + 1)
  }
  return positions
}
18. trim() // es5 定義了這個(gè)方法,會(huì)返回一個(gè)刪除了前置及后綴的所有空格的新字符串,如:
var stringValue = "  abc  "
stringValue.trim() // "abc"
 // 支持的瀏覽器 IE 9+,F(xiàn)irefox 3.5+, Safari 5+, Opera 10.5+, Chrome
 // 此外 Firefox 3.5+, Safari 5+ Chrome 8+ 還支持非標(biāo)準(zhǔn)的 trimLeft() trimRight() 方法,分別用來(lái)刪除字符串開(kāi)頭和結(jié)尾的空格
19. 字符串大小寫(xiě)轉(zhuǎn)換方法
toLowerCase() toLocaleLowerCase() toUpperCase() toLocaleUpperCase()
toLocaleLowerCase() toLocaleUpperCase() // 為對(duì)少數(shù)語(yǔ)言應(yīng)用的特殊規(guī)則

var stringValue = "Hello World!"
stringValue.toLowerCase() // "hello world!"
stringValue.toUpperCase() // "HELLO WORLD!"
20. 字符串的模式匹配方法

這一部分稍后添加上去?

21. URI 編碼方法 encodeURI() encodeURIComponent() 對(duì)應(yīng) decodeURI() decodeURIComponent()

編碼方法可以對(duì) URI(Uniform Resource Identifiers 通用資源標(biāo)識(shí)符) 進(jìn)行編碼,以便發(fā)送給瀏覽器。有效的 URI 不能包含某些字符,如空格。
它們用特殊的 UTF-8 編碼替換所有無(wú)效字符,從而讓瀏覽器能夠接受和理解。
區(qū)別是 encodeURI() 不會(huì)對(duì)本身屬于 URI 的特殊字符進(jìn)行編碼,例如冒號(hào)、正斜杠、問(wèn)號(hào)、井號(hào);而 encodeURIComponent()
會(huì)對(duì)它發(fā)現(xiàn)的所有非標(biāo)準(zhǔn)字符進(jìn)行編碼。

decodeURI() 是 encodeURI() 的反操作
decodeURIComponent() 是 encodeURIComponent() 的反操作

第一部分結(jié)束。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/91303.html

相關(guān)文章

  • JavaScript高級(jí)程序設(shè)計(jì)摘要筆記-3

    摘要:如果重設(shè)構(gòu)造函數(shù)的原型對(duì)象,那么,會(huì)切斷新的原型對(duì)象和任何之前已經(jīng)存在的構(gòu)造函數(shù)實(shí)例之間的聯(lián)系,它們引用的仍然是最初的原型。說(shuō)明返回的對(duì)象與構(gòu)造函數(shù)或者與構(gòu)造函數(shù)的原型屬性沒(méi)有關(guān)系。 說(shuō)明: 此摘要筆記系列是我最近看《JavaScript高級(jí)程序設(shè)計(jì)(第3版)》隨手所記。里面分條列舉了一些我認(rèn)為重要的、需要記下的、對(duì)我有幫助的點(diǎn),是按照我看的順序來(lái)的。摘要筆記本身沒(méi)有系統(tǒng)性,沒(méi)有全面性...

    AndroidTraveler 評(píng)論0 收藏0
  • JavaScript高級(jí)程序設(shè)計(jì)摘要筆記-5

    摘要:函數(shù)表達(dá)式和閉包函數(shù)聲明的一個(gè)重要特征是函數(shù)聲明提升如遞歸遞歸函數(shù)是在一個(gè)函數(shù)通過(guò)名字調(diào)用自身的情況下構(gòu)成的。注意中已經(jīng)是塊級(jí)作用域了,所以這些東西感覺(jué)實(shí)際用途沒(méi)有那么大,但是對(duì)理解閉包對(duì)作用域鏈中的屬性的引用,這一點(diǎn)還是有作用的。 函數(shù)表達(dá)式和閉包 1. 函數(shù)聲明的一個(gè)重要特征是函數(shù)聲明提升 如: sayHi() function sayHi () { console.log(h...

    JerryWangSAP 評(píng)論0 收藏0
  • JavaScript高級(jí)程序設(shè)計(jì)摘要筆記-6

    摘要:關(guān)于對(duì)象定義了全局對(duì)象。支持的瀏覽器有除了接受要序列化的對(duì)象外,還可以接受另外兩個(gè)參數(shù)。如果是數(shù)值,則表示每個(gè)級(jí)別縮進(jìn)的空格數(shù),最大,超過(guò)的值自動(dòng)轉(zhuǎn)換成。字符串長(zhǎng)度超過(guò),結(jié)果中將只出現(xiàn)前個(gè)字符。會(huì)在結(jié)果字符串中插入換行符提高可讀性。 關(guān)于JSON 1. JSON 對(duì)象 es5 定義了全局對(duì)象 JSON。支持的瀏覽器有 IE8+ 、Firefox 3.5+ 、Safari 4+、Chro...

    Batkid 評(píng)論0 收藏0
  • JavaScript高級(jí)程序設(shè)計(jì)摘要筆記-4

    摘要:思路是,使用原型鏈對(duì)原型屬性和方法進(jìn)行繼承,借用構(gòu)造函數(shù)實(shí)現(xiàn)對(duì)實(shí)例屬性的繼承。注意使用寄生式繼承來(lái)為對(duì)象添加函數(shù),會(huì)由于不能做到函數(shù)復(fù)用而降低效率,這一點(diǎn)與構(gòu)造函數(shù)模式類似。無(wú)論什么情況下都會(huì)調(diào)用兩次超類型的構(gòu)造函數(shù)。 說(shuō)明: 此摘要筆記系列是我最近看《JavaScript高級(jí)程序設(shè)計(jì)(第3版)》隨手所記。里面分條列舉了一些我認(rèn)為重要的、需要記下的、對(duì)我有幫助的點(diǎn),是按照我看的順序來(lái)的...

    zr_hebo 評(píng)論0 收藏0
  • JavaScript高級(jí)程序設(shè)計(jì)摘要筆記-2

    摘要:說(shuō)明此摘要筆記系列是我最近看高級(jí)程序設(shè)計(jì)第版隨手所記。其中,描述符對(duì)象的屬性必須是設(shè)置其中一個(gè)或多個(gè)值,可以修改對(duì)應(yīng)的特性值。如支持的瀏覽器,可以取得指定屬性的描述符。 說(shuō)明: 此摘要筆記系列是我最近看《JavaScript高級(jí)程序設(shè)計(jì)(第3版)》隨手所記。里面分條列舉了一些我認(rèn)為重要的、需要記下的、對(duì)我有幫助的點(diǎn),是按照我看的順序來(lái)的。摘要筆記本身沒(méi)有系統(tǒng)性,沒(méi)有全面性可言,寫(xiě)在這里...

    roland_reed 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<