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

資訊專欄INFORMATION COLUMN

《JavaScript高級(jí)程序設(shè)計(jì)》讀書筆記

dayday_up / 942人閱讀

摘要:為了每個(gè)對(duì)象都能通過來檢測(cè),需要以或者的形式來調(diào)用,傳遞要檢查的對(duì)象作為第一個(gè)參數(shù),稱為。對(duì)象都是動(dòng)態(tài)的,這就意味著每次訪問對(duì)象,都會(huì)運(yùn)行一次查詢。是語言中立的用于訪問和操作和文檔。

一、第三章 基本概念:
1.理解參數(shù)
1.1 可以向函數(shù)中傳遞任意數(shù)量的參數(shù),并且可以通過arguments對(duì)象來訪問這些參數(shù)。
1.2 arguments對(duì)象只是類似數(shù)組,它通過length來確定傳進(jìn)來多少參數(shù)
1.3 arguments它的值永遠(yuǎn)與對(duì)應(yīng)的參數(shù)名的值保持同步
eg:function add(num1,num2){arguments
arguments[1] =10;//修改了arguments[1]的值,對(duì)應(yīng)的num2也會(huì)保持同步(他們的內(nèi)存空間是獨(dú)立的)
}
2.with語句
作用:將代碼的作用域設(shè)置到一個(gè)特定的對(duì)象中
with(location){
 var  url= href;//
var  hostName = hostName;
}
在with代碼內(nèi)部 每個(gè)變量都被認(rèn)為是局部變量。如果局部環(huán)境中找不到該變量定義,那么就會(huì)到location對(duì)象下面找是否有同名的屬性
3.break continue
break立即退出循環(huán),執(zhí)行循環(huán)之后的代碼
continue 退出循環(huán),但是會(huì)從循環(huán)的頂部繼續(xù)執(zhí)行

二、第五章 引用類型
所有對(duì)象都有 toLocalesString() toString() valueOf() 方法 
alert()要接收字符串參數(shù),所以它會(huì)在后臺(tái)調(diào)用 toString()方法   

var color = ["red","blue","green"];
console.log(color.toString());//red,blue,green 返回?cái)?shù)組中每個(gè)值得字符串形式拼接而成的一個(gè)以逗號(hào)分隔的字符串
color.valueOf();   //返回?cái)?shù)組本身
toLocaleString()方法 經(jīng)常返回與上面2種方法一樣的值,但是不同點(diǎn)在于,為了取得每一項(xiàng)的值,調(diào)用的是每一項(xiàng)的toLocaleSrting()而不是toString();
使用toString()檢測(cè)對(duì)象類型Section
可以通過toString() 來獲取每個(gè)對(duì)象的類型。為了每個(gè)對(duì)象都能通過 Object.prototype.toString() 來檢測(cè),需要以 Function.prototype.call() 或者 Function.prototype.apply() 的形式來調(diào)用,傳遞要檢查的對(duì)象作為第一個(gè)參數(shù),稱為thisArg。

var toString = Object.prototype.toString;

toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]

//Since JavaScript 1.8.5
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]                      
  5.5 function類型     
函數(shù)內(nèi)部有2個(gè)特殊對(duì)象 arguments 和this                
arguments保存著函數(shù)中傳入的所有參數(shù) 這個(gè)對(duì)象還有個(gè)callee的屬性,指向擁有這個(gè)arguments對(duì)象的函數(shù)。      
eg:
function test(num) {
    if(num<=1){
        return 1
    }else {
        return num*test(num-1);
    }
}
//這個(gè)函數(shù)的執(zhí)行與函數(shù)名緊緊耦合在一起,為了消除這種耦合,可以像下面這樣寫
function test(num) {
    if(num<=1){
        return 1
    }else {
        return num*arguments.callee(num-1);
    }

var test1 = test;
test = function () {
    return 0;
}
test1(5)//120
test(5)//0
//這樣重寫了test函數(shù)后,也可以保證函數(shù)的正常調(diào)用    

三、第八章 window對(duì)象 BOM的核心
BOM的核心對(duì)象是window,它表示的是一個(gè)瀏覽器實(shí)例。在瀏覽器中,window有雙重角色,既是js訪問瀏覽器的一個(gè)接口,又是js規(guī)定的    
gloabal對(duì)象.
8.1窗口關(guān)系及框架
如果頁面包含框架,則每個(gè)框架都包含自己的window對(duì)象,并且保存在frames集合中。window.frames
每個(gè)window對(duì)象都有一個(gè)name屬性,即框架名稱。
top對(duì)象始終指向最外層的框架,也就是瀏覽器窗口
與top相對(duì)的是 parent ,它始終指向當(dāng)前框架的直接上層框架
8.1.5 導(dǎo)航和打開窗口
window.open()方法 既可以導(dǎo)航到一個(gè)特定url,也可以打開一個(gè)瀏覽器窗口
它可以接受四個(gè)參數(shù):要加載的url,窗口目標(biāo),一個(gè)特性字符串,一個(gè)表示新頁面是否取代瀏覽器歷史記錄中當(dāng)前加載頁面的布爾值。通常只傳第一個(gè)參數(shù),最后一個(gè)只在不打開新窗口的情況下使用。
eg:
var wroxWin = window.open("http://www.baidu.com","wroxWindow","height=400,width=200");
wroxWin.resizeTo(500,500);//調(diào)整大小
wroxWin.moveTo(100,100)//移動(dòng)位置
wroxWin.close()//關(guān)閉新打開的窗口
可以通過try catch  以及判斷 wroxWin == null 來判斷是否 受到彈窗屏蔽程序影響
8.2 location對(duì)象 
location.href = ""跳轉(zhuǎn)到指定頁面
location.replace 實(shí)現(xiàn)導(dǎo)航到一個(gè)新的 url地址,替換掉當(dāng)前頁面在瀏覽器中的歷史記錄
8.3navigator 
它有一個(gè)公共屬性 userAgent
history.go(1) 等同于 history.forword()
history.go(-1)等同于 history.back()
if(history.length ==1)則表示這是用戶打開窗口后的第一個(gè)頁面

四、第十章 DOM
document 三個(gè)與網(wǎng)頁請(qǐng)求有關(guān)的屬性
1.URL 即地址欄中顯示的URL
2.domain 即頁面域名 
3.referrer 保存著鏈接到當(dāng)前頁面的那個(gè)頁面的URL
三個(gè)屬性中,只有domain是可以設(shè)置的,由于安全方面的限制,不能將這個(gè)屬性設(shè)置成URL中不包含的域
//假設(shè)頁面來自p2p.wrox.com
document.domain = "wrox.com" //成功
document.domain = "nczel.net"http://失敗
由于跨域的安全限制,來自不同子域的頁面無法通過js通性,而通過將每個(gè)頁面的document.domain設(shè)置成相同值,這些頁面就可以互相訪問對(duì)方的js對(duì)象了
Node類型:
每個(gè)節(jié)點(diǎn)都有一個(gè)childNodes屬性,其中保存著一個(gè)NodeList對(duì)象,NodeList是一種類數(shù)組對(duì)象,用于保存一組有序的節(jié)點(diǎn)。
NodeList的獨(dú)特之處在于,它是基于DOM結(jié)構(gòu)動(dòng)態(tài)執(zhí)行查詢的結(jié)果,因此DOM結(jié)構(gòu)的變化,能夠自動(dòng)地反應(yīng)在NodeList對(duì)象中。它是有生命有呼吸的對(duì)象,而不是第一次訪問,某個(gè)瞬間拍攝下來的一張快照。
對(duì)于arguments對(duì)象和NodeList對(duì)象,都可以使用Array.prototype.slice(),將其轉(zhuǎn)換成數(shù)組。
eg:
var arrayOfNodes = Array.prototype.slice.call(someNode.childNodes,0)
NodeList對(duì)象都是動(dòng)態(tài)的,這就意味著每次訪問NodeList對(duì)象,都會(huì)運(yùn)行一次查詢。
DOM是語言中立的api,用于訪問和操作HTML和XML文檔。DOM 1級(jí)將HTML 和 XML文檔形象地看做一個(gè)層次化的節(jié)點(diǎn)樹,可以使用js來操作這個(gè)節(jié)點(diǎn)樹,進(jìn)而改變底層文檔的外觀和結(jié)構(gòu)。

五、第十一章 DOM擴(kuò)展
1.Selector Api 定義了2個(gè)方法,querySelector() querySelectorAll()
eg:document.querySelector("body")
返回匹配的第一個(gè)元素,沒有則返回null
能夠調(diào)用的類型為Document 和 Element 類型 

eg:var ems = document.getElementById("myDiv").querySelectorAll("em");
返回所有匹配的元素,返回的值是帶有屬性和方法的NodeList ,底層實(shí)現(xiàn)類似于 一組元素的快照,而非不斷的動(dòng)態(tài)查詢,沒有則返回null
能夠調(diào)用的類型為Document 和 Element  DocumentFrament 類型
3.Element Traversal Api定義了額外的屬性,能方便地從一個(gè)元素跳到另一個(gè)元素 
3.HTML5 
classList: add() contains()//是否存在  remove() toggle() 用于操作元素的類名
eg:div.classList.remove("user");原來是使用div.className 返回為字符串

焦點(diǎn)管理:document.activeElement 這個(gè)屬性始終會(huì)引用dom中當(dāng)前獲得焦點(diǎn)的元素 文檔加載期間為null
document.hasFocus()檢測(cè)文檔是否獲得了焦點(diǎn)
document.readyState 有2個(gè)屬性值 loading //正在加載文檔  complete //已經(jīng)加載完文檔
html5 元素 上添加 data- 屬性 可以通過 div.dataset來訪問
eg 
//獲取div.dataset.appid scollIntoView() scollIntoViewIfNeed() 之前的筆記中有詳細(xì)介紹
六、十三章 事件
事件流:捕獲 目標(biāo)元素 冒泡 document html body div的順序
addEventListener 接收三個(gè)參數(shù) 事件名,函數(shù),布爾值 true表示捕獲階段調(diào)用處理程序 false表示冒泡階段調(diào)用處理程序

html5事件
1.contextmenu 即通過鼠標(biāo)右鍵點(diǎn)出上下文菜單
2.beforeunload 事件
3.hasChange事件 Url的參數(shù)列表發(fā)生變化時(shí)調(diào)用
4.readystatechange事件 uninitialized 未初始化 loading loaded interactive交互 complete 完成

七、第二十一章 ajax
ajax  的核心對(duì)象 XHRHttpRequest
XHRHttpRequest 常用方法和屬性
onreadyStateChange:監(jiān)聽當(dāng)前http的狀態(tài)函數(shù),當(dāng)請(qǐng)求狀態(tài)發(fā)生變化時(shí),就會(huì)調(diào)用該函數(shù)
open: xhr.open("get","http://www.baidu.com",true);// 三個(gè)參數(shù) 方法 地址 是否異步
send:接收一個(gè)參數(shù)作為請(qǐng)求主體發(fā)送的數(shù)據(jù),若不需要?jiǎng)t傳null  send(null)
abort:終止連接 xhr.abort()
error:在請(qǐng)求錯(cuò)誤時(shí)使用
responseText: 作為響應(yīng)主體被返回的文本
status : 響應(yīng)的http狀態(tài)
statusText: http狀態(tài)說明
readyState:當(dāng)前http狀態(tài)變化值0-4
0:未初始化,還沒定調(diào)用open
1:啟動(dòng)  已調(diào)用open方法但是沒調(diào)用send方法
2:發(fā)送  請(qǐng)求被接收 send()方法完成,但是尚未接收到響應(yīng)
3:接收 已經(jīng)接收到部分響應(yīng)數(shù)據(jù)
4.完成 請(qǐng)求處理完成,響應(yīng)就緒
status:請(qǐng)求處理完之后,http的響應(yīng)碼
200:請(qǐng)求數(shù)據(jù)返回成功
404:沒有發(fā)現(xiàn)查詢的url

只有當(dāng)get的時(shí)候,才會(huì)存在緩存問題   (IE上比較嚴(yán)重)
解決緩存問題:     getTime()取得時(shí)間戳(毫秒)
超時(shí)設(shè)定 timeout屬性 表示請(qǐng)求在等待多少毫秒后就終止 xhr.timeout = 0 ;即用不過時(shí)
eg:
var xhr = new XMLHttpRequest();
//連接服務(wù)器
xhr.open("get","http://www.baidu.com",true);// 三個(gè)參數(shù) 方法 地址 是否異步
//發(fā)送請(qǐng)求
xhr.send(null);
xhr.onreadystatechange = function () {
    if(xhr.readyState == 4){
        if(xhr.status == "200"){
            console.log(xhr.responseText);
        }else {
            alert(xhr.status);
        }
    }
}
跨域問題:
CORS ,圖像ping和JSONP都是利用其src屬性實(shí)現(xiàn)跨域
comet(服務(wù)器向頁面推送數(shù)據(jù)的技術(shù))是對(duì)ajax的進(jìn)一步擴(kuò)展 
實(shí)現(xiàn)的手段主要有兩個(gè):長(zhǎng)輪詢和HTTP流 ,所以瀏覽器都支持長(zhǎng)輪詢 部分支持HTTP流
SSE (server-send Events 服務(wù)器發(fā)送事件) 是一種實(shí)現(xiàn)comet交互的瀏覽器API,既支持長(zhǎng)輪詢,也支持HTTP流
websSockts 是一種持久的與服務(wù)器進(jìn)行全雙工雙向通信的信道,不使用http協(xié)議,而是一種自定義協(xié)議

                       

 

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

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

相關(guān)文章

  • 002-讀書筆記-JavaScript高級(jí)程序設(shè)計(jì) 在HTML中使用JavaScript

    摘要:文件內(nèi)部使用使用到的代碼引入外部文件外部代碼的地址標(biāo)簽的位置一般情況下,標(biāo)簽的位置放在標(biāo)簽中引入代碼頁面結(jié)構(gòu)對(duì)于需要引入很多的中間,如果把放在頭部,無疑會(huì)導(dǎo)致瀏覽器呈現(xiàn)頁面出現(xiàn)延遲,就是導(dǎo)致頁面出現(xiàn)空白。頁面結(jié)構(gòu)引入代碼 這篇筆記的內(nèi)容對(duì)應(yīng)的是《JavaScript高級(jí)程序設(shè)計(jì)(第三版)》中的第二章。 1.使用方式 在HTML中使用 JavaScript 的方式有兩種,第一種就是直接內(nèi)...

    banana_pi 評(píng)論0 收藏0
  • 001-讀書筆記-JavaScript高級(jí)程序設(shè)計(jì) JavaScript簡(jiǎn)介

    摘要:由于計(jì)算機(jī)的國(guó)際化,組織的標(biāo)準(zhǔn)牽涉到很多其他國(guó)家,因此組織決定改名表明其國(guó)際性。規(guī)范由萬維網(wǎng)聯(lián)盟制定。級(jí)標(biāo)準(zhǔn)級(jí)標(biāo)準(zhǔn)是不存在的,級(jí)一般指的是最初支持的。 這篇筆記的內(nèi)容對(duì)應(yīng)的是《JavaScript高級(jí)程序設(shè)計(jì)(第三版)》中的第一章。 1.ECMA 和 ECMA-262 ECMA 是歐洲計(jì)算機(jī)制造商協(xié)會(huì)的縮寫,全程是 European Computer Manufacturers Ass...

    masturbator 評(píng)論0 收藏0
  • JavaScript高級(jí)程序設(shè)計(jì)》(第3版)讀書筆記 第1~2章

    摘要:表示應(yīng)該立即下載腳本,但不應(yīng)妨礙頁面中的其他操作可選。表示通過屬性指定的代碼的字符集。表示腳本可以延遲到文檔完全被解析和顯示之后再執(zhí)行。實(shí)際上,服務(wù)器在傳送文件時(shí)使用的類型通常是,但在中設(shè)置這個(gè)值卻可能導(dǎo)致腳本被忽略。 第1章 JavaScript 簡(jiǎn)介 雖然JavaScript和ECMAScript通常被人們用來表達(dá)相同的含義,但JavaScript的含義比ECMA-262要多得多...

    Corwien 評(píng)論0 收藏0
  • 讀書筆記(01) - JSON - JavaScript高級(jí)程序設(shè)計(jì)

    摘要:用于把對(duì)象序列化字符串,在序列化對(duì)象時(shí),所有函數(shù)及原型成員都會(huì)被有意忽略,不體現(xiàn)在結(jié)果中。對(duì)第步返回的每個(gè)值進(jìn)行相應(yīng)的序列化。參考文檔高級(jí)程序設(shè)計(jì)作者以樂之名本文原創(chuàng),有不當(dāng)?shù)牡胤綒g迎指出。 showImg(https://segmentfault.com/img/bVburW1?w=658&h=494); JSON與JavaScript對(duì)象 JSON是一種表示結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)格式,語...

    mengbo 評(píng)論0 收藏0
  • 004-讀書筆記-JavaScript高級(jí)程序設(shè)計(jì) 基本概念(下)

    摘要:操作符,會(huì)將數(shù)值改變正數(shù)變成負(fù)數(shù)負(fù)數(shù)變成正數(shù)。同時(shí),也說明了,使用兩個(gè)邏輯非操作符和的操作結(jié)果相同。操作符得到的是余數(shù)。不相等操作符有兩種。 這篇筆記的內(nèi)容對(duì)應(yīng)的是《JavaScript高級(jí)程序設(shè)計(jì)(第三版)》中的第三章。 1.操作符 1-1 一元操作符 遞增和遞減操作符 遞增和遞減操作符有兩個(gè) ++ 和 --。一元操作符使用的時(shí)候,可以前置也可以后置。由于兩個(gè)操作方式類似,先只說明 ...

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

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

0條評(píng)論

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