《JavaScript權威指南(第六版)》知識點總結(一)
第三章 型別、值和變數
JS的資料型別分為:原始型別、物件型別。
原始型別:數字、字串、布林值。
普通物件是“命名值”的無序集合,陣列是帶編號的值的有序集合。函式是具有與它相關聯的可執行程式碼的物件,通過呼叫函式來執行可執行程式碼,並返回結果。
如果函式用來初始化(使用 new 運算子)一個新建的物件,我們稱之為建構函式(constructor)。每個建構函式定義了一個類(class)物件,類可以看做是物件型別的子型別。
除了陣列類和函式類之外,JS定義了其他三種有用的類。日期(Date)類、正則(RegExp)類和錯誤(Error)類。
3.4 null 和 undefined
typeof null // object
typeof undefined // undefined
null 與 undefined 不包括任何屬性和方法
3.6 包裝物件
字串也有同樣的屬性和方法:
只要引用了字串s的屬性,JS就會將字串通過呼叫 new String (s) 的方式轉換成物件,這個物件繼承了字串的方法,並被用來處理屬性的引用。一旦屬性引用結束,這個新物件就會銷燬。var s = 'hello world!'; var word = s.substring(s.indexOf(' ') + 1, s.length);<pre name="code" class="javascript">var s = 'hello'; s.toUpperCase(); s //'hello',原始字串的值並未改變
同字串一樣,數字和布林值也具有各自的方法。
var s = 'test';
s.len = 4;
var t = s.len;
alert(t);
上例中,t 是undefined。
存取字串、數字或布林值的屬性時建立的臨時物件稱做包裝物件。
3.7 不可變的原始值和可變的物件引用
物件的比較並非值的比較,即使兩個物件包含相同的屬性及相同的值,它們也是不相等的。各個索引元素完全相等的兩個陣列也不相等。var s = 'hello'; s.toUpperCase(); s //'hello',原始字串的值並未改變 var o = {x: 1}; o.x = 2; o.y = 3; var a = [1, 2, 3]; a[0] = 0; a[3] = 4; //物件與字串可以修改的
我們通常將物件稱為引用型別,以此來和JS的基本型別區分開來。物件的比較均是引用的比較,當且僅當它們引用同一個基物件時,它們才相等。
var a = [];
var b = a;
b[0] = 1;
a[0] //1
a === b; //true,因為a和b引用同一個陣列
var a = ['a', 'b', 'c'];
var b = [];
for (var i = 0; i < a.length; i++) {
b[i] = a[i];
}
上例的 a 與 b 不相等,因為是兩個陣列。下面的函式可以比較兩個陣列的內容是否相同。
function equalArrays(a, b) {
if (a.length !== b.length) {
return false;
}
for (var i = 0; i < a.length; i++) {
if (a[i] !== b[i]) {
return false;
}
}
return true;
}
3.8 型別轉換
3.8.2 顯示型別轉換
Number('3'); //3
String(false); //false 或使用 false.toString()
Boolean([]); //true
Object(3); //new Number(3)
JS中某些運算子會做隱式的型別轉換
x + '' //String(x)
+x //Number(x),也可以寫成 x-0
!!x //Boolean(x),注意是雙歎號
Number類定義的 toString () 方法可以接收表示轉換基數的可選引數,如果不指定此引數,轉換將基於十進位制。
Number型別定義的 toFixed () 方法中的引數為保留小數位數,toExponential () 方法中的引數為科學計數法保留小數的位數,toPrecision () 方法中的引數是有效數字的位數。
全域性函式 parseInt () 與parseFloat () 可解析整數與浮點數,parseInt () 還可以將基數作為第二個引數。
var a = parseInt('077 blind mice', 8); //63
var b = parseInt('0.7 kilo'); //0
var c = parseInt('.7 kilo'); //NaN
var d = parseFloat('.7 kilo'); //0.7
3.8.3 物件轉換為原始值
物件到布林值的轉換非常簡單:所有的物件(包括陣列和函式)都轉換為 true。對於包裝物件亦是如此:new Boolean(false)是一個物件而不是原始值,它將轉換為 true。
({x: 1, y: 2}).toString() //'[object Object]'
[1, 2, 3].toString() //'1,2,3'
(function (x) { f(x); }).toString() //'(function (x) { f(x); }).toString()'
/\d+/g.toString() //'/\\d+/g',注意轉義符
new Date(2010.0.1).toString() //'Fri Jan 01 2010 00:00:00 GMT-0800 (PST)'
另一個轉換物件的函式是valueOf () ,如果存在任意原始值,它就預設將物件轉換為表示它的原始值。物件是複合值,而且大多數無法真正表示為一個原始值,因此預設的 valueOf () 方法簡單地返回物件本身,而不是返回一個原始值。陣列、函式和正則表示式簡單地繼承了這個預設方法。日期類定義的 valueOf () 方法會返回一個內部表示:1970年1月1日以來的毫秒數。
3.10.1 函式作用域和宣告提前
var scope = 'global';
function f() {
console.log(scope); //undefined
var scope = 'local';
console.log(scope); //local
}
3.10.2 作為屬性的變數
var truevar = 1; //宣告一個不可刪除的全域性變數
fakevar = 2; //建立全域性物件的一個可刪除的屬性
this.fakevar2 = 3; //同上
delete truevar; //false
delete fakevar; //true
delete this.fakevar2; //true
3.10.3 作用域鏈
相關推薦
JavaScript權威指南(第六版) 初讀筆記-對象
avi uid pre class bsp guide ini ole blog 1 var book = { 2 "main title": "JavaScript", // 屬性名字裏有空格,必須用字符串表示 3 "su
JavaScript權威指南(第六版)-第7章 陣列
陣列 一.建立陣列 1.定義:陣列是值得有序集合。每個值叫做一個元素,而每個元素在陣列中有一個位置,以數字表示——索引 陣列的元素可以是任意型別,並且同一個陣列中的不同元素也可能有不同的型別。第一個元素的索引是0,陣列是js物件的特殊形式。 陣列繼承自Array.prototyp
《JavaScript權威指南(第六版)》知識點總結(一)
第三章 型別、值和變數 JS的資料型別分為:原始型別、物件型別。 原始型別:數字、字串、布林值。 普通物件是“命名值”的無序集合,陣列是帶編號的值的有序集合。函式是具有與它相關聯的可執行程式碼的物件,通過呼叫函式來執行可執行程
微型計算機原理復習(第六版)姚向華編著
通過 物理 部件 con 現場 inter isp 多少 不同 微型計算機原理復習(第六版)姚向華編著(轉載請註明出處) 第一章P37 05. 設機器字長為8位,最高位為符號位,試對下列各算式進行二進制補碼運算: (2)8 + 18 = ?[8]補=[8
C++ PRimer PLUS(第六版)中文版 第十一章chapter11答案 參考
bject get quit primer rime 答案 std cat tar #include <iostream>#include <cstdlib>#include <ctime>#include "vector.h" int
PMBOK(第六版) PMP筆記——《十一》第十一章(專案風險管理)
第十一章 風險管理: 專案的獨特性導致專案充滿風險,專案風險是一種不確定的事件或條件,可能發生、將 要發生,也可能不發生。 已發生的消極風險可視為問題,問題又會引發風險。 7 個過程: 1、規劃風險管理:制定風險管理計劃,指導如何實施、開展專案的風險管理活動; 2、識別風險:識別專
c++ primer Plus (第六版)第五章學習筆記
1、cout可以輸出表達式的值,在不特殊設定的情況下,若表示式為判斷表示式則輸出的是0/1,若為賦值表示式則將修改其中的變數值,注意在輸出表達式的值時要加將表示式加(),因為<<的優先順序高於表示式中的運算子。 例: #include<stdafx.h> #inclu
C++ Primer Plus(第六版)第九章課後程式設計答案
1. //golf.h--for pe9-1.cpp const int Len = 40; struct golf { char fullname[Len]; int handicap; }; void setgolf(golf &g, const char *n
C++ Primer Plus(第六版)程式設計練習答案 第12章 類和動態記憶體分配
本章所有程式設計練習的工程原始碼可在此處下載(點選此連結下載),供大家參考交流! 1. 對於下面的類宣告: class Cow { char name[20]; char *hobby; double wei
c++ primer plus(第六版) 第四章重點內容總結 以及手碼練習題答案
1.陣列 可儲存多個同類型的的值。宣告時候 型別 陣列名【元素個數】。其中元素個數必須是整型常數或者const值,常量表達式。c++陣列都是從0開始編號。最後一個元素的索引比陣列長度小一。貌似編譯器不會檢查使用的下表是否有效。sizeof用於陣列名時得到整個陣列中的位元組數
資料庫系統概念(第六版)習題答案——第二章關係模型介紹
第二章 關係模型介紹Employee(person-name, street, city) Works(person-name, company-name, salary) Company(company-name, city) 圖2-14 習題2.1,
C++ primer Plus(第六版)中文版 第五章 迴圈和關係表示式 程式設計練習答案
第五章 程式設計練習 1. 編寫一個要求使用者輸入兩個整數的程式。該程式將計算並輸出兩個整數之間(包括這兩個整數)所有整數的和。 這裡假設先輸入較小的整數。例如:如果使用者輸入的是2和9,則程式將指出2~9 之間所有的整數的和為44. 1.1 for 迴圈版 #incl
計算機網路知識點總結(第六版,謝希仁)
計算機網路知識點總結 1、三網:現如今最重要的三種網路 電信網路(電話網) 有線電視網路(電視網) 計算機網路(發展最快,資訊時代的核心技術,連通性,共享)1.1、 計算機網路的定義:是指將地理位置不同的具有獨立功能的多臺計算機及其外部裝置,通過通訊線路連線起來,在網路作業系統,網
資料庫系統概念(第六版)課後習題答案-第三章SQL(實踐習題)
3.1 使用大學模式,用SQL寫出如下查詢。(建議在一個數據庫上實際執行這些查詢,使用我們在本書的Web網站db-book.com上提供的樣本資料,上述網站還提供瞭如何建立一個數據庫和載入樣本資料的說明。)Classroom(building, room_number, ca
資料庫系統概念(第六版)習題答案——第一章引言
第一章引言實踐習題1.1 這一章講述了資料庫系統的幾個主要的優點。它有哪兩個不足之處?(1) 建立一個數據庫系統需要很多知識、技巧和時間。(2) 資料庫的複雜性可能會導致糟糕的效能1.2 列
軟體工程-軟體工程導論(第六版)第十三章 軟體專案管理(圖片+文字=詳細)
1 引言 今天去給發展預備黨員的積極分子評分,在他們的個人展示中,見到了許多優秀的同學,在向他們學習的同時,對於我個人來說,更重要的是做自己,走好自己的路。活動結束之後,我在思考一個問題,究竟什麼是優秀?這個問題,如果看到這篇文章的讀者有興趣,可以與我共同交流和
PMP(第六版)中的掙值相關的計算相關總結
PMP(第六版)中的掙值相關的計算 首先明確幾個基本概念: EV:掙值,指目前完成工作的價值。—–單位是(元) PV:計劃價值,計劃完成工作量的價值。—–單位是(元) AC:實際成本,實際完成工作量產生的成本。—–單位是(元) 這裡要說明一點的是EV、
C++ Primer Plus(第六版)程式設計練習答案 第7章 函式——C++的程式設計模組
本章所有程式設計練習的工程原始碼可在此處下載(點選開啟下載連結),供大家參考交流! 1. 編寫一個程式,不斷要求使用者輸入兩個數,直到其中的一個為0。對於每兩個數,程式將使用一個函式來計算它們的調和平均數,並將結果返回給main(),而後者將報告結果。調和平均數指的是倒
C++ Primer Plus:中文版(第六版)PDF下載
邏輯操作符 使用 wid site ive 友元 rime blank 虛函數 網盤下載地址:C++ Primer Plus:中文版(第六版)PDF下載 – 易分享電子書PDF資源網 作者: Stephen Prata 出版社: 人民郵電
安卓開發學習筆記—————《Anroid編程權威指南》第六章 Android編程與兼容性問題
studio 通知 編譯 應用 之間 學習 權威指南 安卓 兼容性問題 SDK最低版本 操作系統會拒絕將應用安裝在系統版本低於標準的設備上。 SDK目標版本 目標版本的設定值告知Android:應用時為哪個API級別設計的。 SDK編譯版本 SDK最低版本和目標版本會通知給