摘要:方法返回一個對象,該對象的成員為登記了回調(diào)函數(shù)的各種事件比如或,每個事件對應(yīng)一個數(shù)組,數(shù)組的成員為該事件的回調(diào)函數(shù)。當(dāng)這種情況發(fā)生時,會返回一個對象,包含該事件的相關(guān)信息。方法顯示特定對象的形式,是方法的別名。
console對象是JavaScript的原生對象,它有點像Unix系統(tǒng)的標(biāo)準(zhǔn)輸出stdout和標(biāo)準(zhǔn)錯誤stderr,可以輸出各種信息用來調(diào)試程序,而且還提供了很多額外的方法,供開發(fā)者調(diào)用。它的常見用途有兩個。
1.瀏覽器實現(xiàn)顯示網(wǎng)頁代碼運行時的錯誤信息。
提供了一個命令行接口,用來與網(wǎng)頁代碼互動。
console對象的瀏覽器實現(xiàn),包含在瀏覽器自帶的開發(fā)工具之中。以Chrome瀏覽器的“開發(fā)者工具”(Developer Tools)為例,首先使用下面三種方法的一種打開它。
按F12或者Control + Shift + i(PC平臺)/ Alt + Command + i(Mac平臺)。
在菜單中選擇“工具/開發(fā)者工具”。
在一個頁面元素上,打開右鍵菜單,選擇其中的“Inspect Element”。
打開“開發(fā)者工具”以后,可以看到在頂端有八個面板卡可供選擇,分別是:
Elements:用來調(diào)試網(wǎng)頁的HTML源碼和CSS代碼。
Resources:查看網(wǎng)頁加載的各種資源文件(比如代碼文件、字體文件、css文件等),以及在硬盤上創(chuàng)建的各種內(nèi)容(比如本地緩存、Cookie、Local Storage等)。
Network:查看網(wǎng)頁的HTTP通信情況。
Sources:調(diào)試JavaScript代碼。
Timeline:查看各種網(wǎng)頁行為隨時間變化的情況。
Profiles:查看網(wǎng)頁的性能情況,比如CPU和內(nèi)存消耗。
Audits:提供網(wǎng)頁優(yōu)化的建議。
Console:用來運行JavaScript命令。
這八個面板都有各自的用途。以下內(nèi)容只針對Console面板,又稱為控制臺。Console面板基本上就是一個命令行窗口,你可以在提示符下,鍵入各種命令。
2.console對象的方法console對象提供的各種方法,用來與控制臺窗口互動。
2.1 log(),info(),debug()console.log方法用于在console窗口輸出信息。它可以接受多個參數(shù),將它們的結(jié)果連接起來輸出。
console.log("Hello World") // Hello World console.log("a","b","c") // a b c
console.log方法會自動在每次輸出的結(jié)尾,添加換行符。
console.log(1); console.log(2); console.log(3); // 1 // 2 // 3
如果第一個參數(shù)是格式字符串(使用了格式占位符),console.log方法將依次用后面的參數(shù)替換占位符,然后再進行輸出。
console.log(" %s + %s = %s", 1, 1, 2) // 1 + 1 = 2
上面代碼中,console.log方法的第一個參數(shù)有三個占位符(%s),第二、三、四個參數(shù)會在顯示時,依次替換掉這個三個占位符。console.log方法支持的占位符格式有以下一些,不同格式的數(shù)據(jù)必須使用對應(yīng)格式的占位符。
%s 字符串
%d 整數(shù)
%i 整數(shù)
%f 浮點數(shù)
%o 對象的鏈接
%c CSS格式字符串
var number = 11 * 9; var color = "red"; console.log("%d %s balloons", number, color); // 99 red balloons
上面代碼中,第二個參數(shù)是數(shù)值,對應(yīng)的占位符是%d,第三個參數(shù)是字符串,對應(yīng)的占位符是%s。
使用%c占位符時,對應(yīng)的參數(shù)必須是CSS語句,用來對輸出內(nèi)容進行CSS渲染。
console.log("%cThis text is styled!", "color: red; background: yellow; font-size: 24px;" )
上面代碼運行后,輸出的內(nèi)容將顯示為黃底紅字。
console.log方法的兩種參數(shù)格式,可以結(jié)合在一起使用。
console.log(" %s + %s ", 1, 1, "= 2") // 1 + 1 = 2
如果參數(shù)是一個對象,console.log會顯示該對象的值。
console.log({foo: "bar"}) // Object {foo: "bar"} console.log(Date) // function Date() { [native code] }
上面代碼輸出Date對象的值,結(jié)果為一個構(gòu)造函數(shù)。
console.info()和console.debug()都是console.log方法的別名,用法完全一樣。只不過console.info方法會在輸出信息的前面,加上一個藍色圖標(biāo)。
console對象的所有方法,都可以被覆蓋。因此,可以按照自己的需要,定義console.log方法。
["log", "info", "warn", "error"].forEach(function(method) { console[method] = console[method].bind( console, new Date().toISOString() ); }); console.log("瞧,我在前面添加了現(xiàn)在的時間!"); // 2014-05-18T09:00.000Z 出錯了!
上面代碼表示,使用自定義的console.log方法,可以在顯示結(jié)果添加當(dāng)前時間。
2.2 warn(),error()warn方法和error方法也是輸出信息,它們與log方法的不同之處在于,warn方法輸出信息時,在最前面加一個黃色三角,表示警告;error方法輸出信息時,在最前面加一個紅色的叉,表示出錯,同時會顯示錯誤發(fā)生的堆棧。其他用法都一樣。
console.error("Error: %s (%i)", "Server is not responding",500) // Error: Server is not responding (500) console.warn("Warning! Too few nodes (%d)", document.childNodes.length) // Warning! Too few nodes (1)
本質(zhì)上,log方法是寫入標(biāo)準(zhǔn)輸出(stdout),warn方法和error方法是寫入標(biāo)準(zhǔn)錯誤(stderr)。
2.3 table()對于某些復(fù)合類型的數(shù)據(jù),console.table方法可以將其轉(zhuǎn)為表格顯示。
var languages = [ { name: "JavaScript", fileExtension: ".js" }, { name: "TypeScript", fileExtension: ".ts" }, { name: "CoffeeScript", fileExtension: ".coffee" } ]; console.table(languages);
上面代碼的language,轉(zhuǎn)為表格顯示如下。
復(fù)合型數(shù)據(jù)轉(zhuǎn)為表格顯示的條件是,必須擁有主鍵。對于上面的數(shù)組來說,主鍵就是數(shù)字鍵。對于對象來說,主鍵就是它的最外層鍵。
var languages = { csharp: { name: "C#", paradigm: "object-oriented" }, fsharp: { name: "F#", paradigm: "functional" } }; console.table(languages);
上面代碼的language,轉(zhuǎn)為表格顯示如下。
2.4 count()count方法用于計數(shù),輸出它被調(diào)用了多少次。
function greet(user) { console.count(); return "hi " + user; } greet("bob") // : 1 // "hi bob" greet("alice") // : 2 // "hi alice" greet("bob") // : 3 // "hi bob"
上面代碼每次調(diào)用greet函數(shù),內(nèi)部的console.count方法就輸出執(zhí)行次數(shù)。
該方法可以接受一個字符串作為參數(shù),作為標(biāo)簽,對執(zhí)行次數(shù)進行分類。
function greet(user) { console.count(user); return "hi " + user; } greet("bob") // bob: 1 // "hi bob" greet("alice") // alice: 1 // "hi alice" greet("bob") // bob: 2 // "hi bob"
上面代碼根據(jù)參數(shù)的不同,顯示bob執(zhí)行了兩次,alice執(zhí)行了一次。
2.5 dir()dir方法用來對一個對象進行檢查(inspect),并以易于閱讀和打印的格式顯示。
console.log({f1: "foo", f2: "bar"}) // Object {f1: "foo", f2: "bar"} console.dir({f1: "foo", f2: "bar"}) // Object // f1: "foo" // f2: "bar" // __proto__: Object
上面代碼顯示dir方法的輸出結(jié)果,比log方法更易讀,信息也更豐富。
該方法對于輸出DOM對象非常有用,因為會顯示DOM對象的所有屬性。
console.dir(document.body)2.6 assert()
assert方法接受兩個參數(shù),第一個參數(shù)是表達式,第二個參數(shù)是字符串。只有當(dāng)?shù)谝粋€參數(shù)為false,才會輸出第二個參數(shù),否則不會有任何結(jié)果。
// 實例 console.assert(true === false, "判斷條件不成立") // Assertion failed: 判斷條件不成立
下面是另一個例子,判斷子節(jié)點的個數(shù)是否大于等于500。
console.assert(list.childNodes.length < 500, "節(jié)點個數(shù)大于等于500")2.7 time(),timeEnd()
這兩個方法用于計時,可以算出一個操作所花費的準(zhǔn)確時間。
console.time("Array initialize"); var array= new Array(1000000); for (var i = array.length - 1; i >= 0; i--) { array[i] = new Object(); }; console.timeEnd("Array initialize"); // Array initialize: 1914.481ms
time方法表示計時開始,timeEnd方法表示計時結(jié)束。它們的參數(shù)是計時器的名稱。調(diào)用timeEnd方法之后,console窗口會顯示“計時器名稱: 所耗費的時間”。
2.8 profile(),profileEnd()console.profile方法用來新建一個性能測試器(profile),它的參數(shù)是性能測試器的名字。
console.profile("p") // Profile "p" started.
console.profileEnd方法用來結(jié)束正在運行的性能測試器。
console.profileEnd() // Profile "p" finished.
打開瀏覽器的開發(fā)者工具,在profile面板中,可以看到這個性能調(diào)試器的運行結(jié)果。
2.9 group(),groupend(),groupCollapsed()console.group和console.groupend這兩個方法用于將顯示的信息分組。它只在輸出大量信息時有用,分在一組的信息,可以用鼠標(biāo)折疊/展開。
console.group("Group One"); console.group("Group Two"); // some code console.groupEnd(); // Group Two 結(jié)束 console.groupEnd(); // Group One 結(jié)束
console.groupCollapsed方法與console.group方法很類似,唯一的區(qū)別是該組的內(nèi)容,在第一次顯示時是收起的(collapsed),而不是展開的。
console.groupCollapsed("Fetching Data"); console.log("Request Sent"); console.error("Error: Server not responding (500)"); console.groupEnd();
上面代碼只顯示一行”Fetching Data“,點擊后才會展開,顯示其中包含的兩行。
2.10 trace(),clear()console.trace方法顯示當(dāng)前執(zhí)行的代碼在堆棧中的調(diào)用路徑。
console.trace() // console.trace() // (anonymous function) // InjectedScript._evaluateOn // InjectedScript._evaluateAndWrap // InjectedScript.evaluate
console.clear方法用于清除當(dāng)前控制臺的所有輸出,將光標(biāo)回置到第一行。
3. 命令行API在控制臺中,除了使用console對象,還可以使用一些控制臺自帶的命令行方法。
(1)$_$_屬性返回上一個表達式的值。
2+2 // 4 $_ // 4(2)$0- $4
控制臺保存了最近5個在Elements面板選中的DOM元素,$0代表倒數(shù)第一個,$1代表倒數(shù)第二個,以此類推直到$4。
(3)$(selector)$(selector)返回一個數(shù)組,包括特定的CSS選擇器匹配的所有DOM元素。該方法實際上是document.querySelectorAll方法的別名。
var images = $("img"); for (each in images) { console.log(images[each].src); }
上面代碼打印出網(wǎng)頁中所有img元素的src屬性。
(4)$$(selector)$$(selector)返回一個選中的DOM對象,等同于document.querySelectorAll。
(5)$x(path)$x(path)方法返回一個數(shù)組,包含匹配特定XPath表達式的所有DOM元素。
$x("http://p[a]")
上面代碼返回所有包含a元素的p元素。
(6)inspect(object)inspect(object)方法打開相關(guān)面板,并選中相應(yīng)的元素:DOM元素在Elements面板中顯示,JavaScript對象在Profiles中顯示。
(7)getEventListeners(object)getEventListeners(object)方法返回一個對象,該對象的成員為登記了回調(diào)函數(shù)的各種事件(比如click或keydown),每個事件對應(yīng)一個數(shù)組,數(shù)組的成員為該事件的回調(diào)函數(shù)。
(8)keys(object),values(object)keys(object)方法返回一個數(shù)組,包含特定對象的所有鍵名。
values(object)方法返回一個數(shù)組,包含特定對象的所有鍵值。
var o = {"p1":"a", "p2":"b"}; keys(o) // ["p1", "p2"] values(o) // ["a", "b"](9)monitorEvents(object[, events]) ,unmonitorEvents(object[, events])
monitorEvents(object[, events])方法監(jiān)聽特定對象上發(fā)生的特定事件。當(dāng)這種情況發(fā)生時,會返回一個Event對象,包含該事件的相關(guān)信息。unmonitorEvents方法用于停止監(jiān)聽。
monitorEvents(window, "resize"); monitorEvents(window, ["resize", "scroll"])
上面代碼分別表示單個事件和多個事件的監(jiān)聽方法。
monitorEvents($0, "mouse"); unmonitorEvents($0, "mousemove");
上面代碼表示如何停止監(jiān)聽。
monitorEvents允許監(jiān)聽同一大類的事件。所有事件可以分成四個大類。
mouse:”mousedown”, “mouseup”, “click”, “dblclick”, “mousemove”, “mouseover”, “mouseout”, “mousewheel”
key:”keydown”, “keyup”, “keypress”, “textInput”
touch:”touchstart”, “touchmove”, “touchend”, “touchcancel”
control:”resize”, “scroll”, “zoom”, “focus”, “blur”, “select”, “change”, “submit”, “reset”
monitorEvents($("#msg"), "key");
上面代碼表示監(jiān)聽所有key大類的事件。
(10)profile([name]),profileEnd()profile方法用于啟動一個特定名稱的CPU性能測試,profileEnd方法用于結(jié)束該性能測試。
profile("My profile") profileEnd("My profile")(11)其他方法
命令行API還提供以下方法。
4. debugger語句clear()方法清除控制臺的歷史。
copy(object)方法復(fù)制特定DOM元素到剪貼板。
dir(object)方法顯示特定對象的所有屬性,是console.dir方法的別名。
dirxml(object)方法顯示特定對象的XML形式,是console.dirxml方法的別名。
debugger語句必須與除錯工具配合使用,如果沒有除錯工具,debugger語句不會產(chǎn)生任何結(jié)果。
在chrome瀏覽器中,當(dāng)代碼運行到debugger指定的行時,就會暫停運行,自動打開console界面。它的作用類似于設(shè)置斷點。
for(var i = 0;i<5;i++){ console.log(i); if (i===2) debugger; }
上面代碼打印出0,1,2以后,就會暫停,自動打開console窗口,等待進一步處理。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/78808.html
摘要:對象描述是一個擁有屬性和方法的集合體屬性表示該對象的外貌方法表示該對象的行為對象的分類內(nèi)置對象表示中的預(yù)定義對象宿主對象表示匹配瀏覽器的對象比如自定義對象表示由開發(fā)人員定義的對象定義對象字面量方式語法對象名屬性名屬性值方法名方法體張小凡御雷 對象 描述 是一個擁有屬性和方法的集合體 屬性 表示該對象的外貌 方法 表示該對象的行為 對象的分類 內(nèi)置對象 表示JavaScr...
摘要:原型模式定義構(gòu)造函數(shù),在構(gòu)造函數(shù)的原型對象中定義對象的屬性和方法,并通過構(gòu)造函數(shù)創(chuàng)建對象。,屬性存在于實例對象中,屬性不存在于實例對象中分割線操作符會在通過對象能夠訪問給定屬性時返回,無論該屬性是存在于實例中還是原型中。 原型模式 定義構(gòu)造函數(shù),在構(gòu)造函數(shù)的原型對象中定義對象的屬性和方法,并通過構(gòu)造函數(shù)創(chuàng)建對象。 1.創(chuàng)建對象 function Person(){}; Person....
摘要:對象是由構(gòu)造函數(shù)創(chuàng)建而成的,所以它的指向原型鏈圖對象的原型鏈圖對象屬性引用的匿名函數(shù)的原型鏈圖 Object模式 創(chuàng)建一個Object實例,再為其添加屬性和方法。 這是創(chuàng)建自定義對象最簡單的方式。 1.創(chuàng)建對象 // 創(chuàng)建person對象 var person = new Object(); person.name = Mike; person.age = 20; person.jo...
摘要:創(chuàng)建對象與工廠模式的區(qū)別沒有顯示地創(chuàng)建對象直接將方法和屬性付給了對象沒有語句構(gòu)造函數(shù)應(yīng)該始終以一個大寫字母開頭。創(chuàng)建構(gòu)造函數(shù)的實例,必須使用操作符。 構(gòu)造函數(shù)模式 ECMAScript中的構(gòu)造函數(shù)可用來創(chuàng)建特定類型的對象,像Object和Array這樣的原生構(gòu)造函數(shù)。也可以創(chuàng)建自定義的構(gòu)造函數(shù),從而定義自定義對象類型的屬性和方法。 1.創(chuàng)建對象 function Person(name...
摘要:宿主對象指的是運行環(huán)境提供的對象。不過類型是中所有類型的父級所有類型的對象都可以使用的屬性和方法可以通過的構(gòu)造函數(shù)來創(chuàng)建自定義對象。當(dāng)以非構(gòu)造函數(shù)形式被調(diào)用時,等同于。對象初始化器方式使用對象初始化器也被稱作通過字面值創(chuàng)建對象。 對象 概述 在JavaScript中的對象,和其他編程語言中的對象一樣,可以比照現(xiàn)實生活中的對象來理解它。 對象的分類 1.內(nèi)置對象/原生對象就是JavaSc...
摘要:原型原型是什么在中函數(shù)是一個包含屬性和方法的類型的對象而原型就是類型對象的一個屬性在函數(shù)定義時就包含了屬性它的初始值是一個空對象在中并沒有定義函數(shù)的原型類型所以原型可以是任何類型原型是用于保存對象的共享屬性和方法的原型的屬性和方法并不會影響 原型 原型是什么 在JavaScript中 函數(shù)是一個包含屬性和方法的Function類型的對象 而原型(Prototype)就是Function...
閱讀 3044·2021-11-19 11:31
閱讀 3129·2021-09-02 15:15
閱讀 985·2019-08-29 17:22
閱讀 1058·2019-08-29 16:38
閱讀 2464·2019-08-26 13:56
閱讀 833·2019-08-26 12:16
閱讀 1435·2019-08-26 11:29
閱讀 929·2019-08-26 10:12