日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript 引用类型 读书笔记

發布時間:2023/12/20 javascript 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript 引用类型 读书笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

● Object 類型
● Array類型
● Date類型
● RegExp類型
● Function類型
● 基本包裝類型
● 單體內置對象

Object類型

創建對象: 使用`new Object`或者直接使用**字面量**`var obj={}` 字面量定義對象**不會**調用Object構造函數 訪問對象屬性: 使用點 `.` 或者方括號內字符串 `obj["key"]` 使用 *value* `instenceof` ***Object*** 可以引來判斷對象 var s="hello"; var arr=[1,2,3,4,5]; console.log(s instanceof Array); //false 對于基本類型,instanceof 總是返回 false console.log(ob instanceof Array); //true

Array類型

使用Array構造函數時可以省略 `new` 操作符. 修改`length`屬性可以直接改變數組的長度. 如果數組的索引超過了當前數組, 也會直接改變數組的長度. *可以使用`arr[arr.length]`在數組末尾添加新項 var arr = [1,2,3,4,5]; //字面量創建 var arr = Array(5) //創建數組長度為5的空數組 var arr = Array(1,2,3,4,5) //使用構造函數創建 Array方法說明
Array.isArray(arr)判斷某個值是不是數組 返回 true/false
arr.toString()返回數組中每個值的字符串形式
arr.toLocaleString()根據所在區域的字符串形式返回字符串
arr.valueOf()返回當前數組
arr.join(separator)separator參數可選, 按指定的連接方式返回字符串,元素的連接符號為傳入的參數, 默認為逗號。
null 和 undefined 用空格表示, 不會改變原有的數組。
arr.push(value)棧方法 壓接收任意數量的參數, 把他們逐個添加到數組末尾, 返回修改后的數組長度
arr.pop()棧方法 彈出從數組末尾移除一項, length 的值-1,返回移除的項
arr.unshift(value)隊列方法接收任意數量的參數, 把他們逐個添加到數組前端, 返回修改后的數組長度
arr.shift()隊列方法從數組前端移除一項, length 的值-1,返回移除的項
arr.reverse()反轉數組反轉當前數組元素的順序,會直接改變當前的數組順序
arr.sort(fucntion)重排序接收一個函數,該函數接收2個參數,根據該函數的返回值重新排序數組,會改變當前的數組順序
如果返回正數,則第一個參數在第二個參數之前;如果返回0,則位置相等;
如果返回負數,則第一個參數在第二個參數之后。
*可以使用return value2-value1 比較數字大小
arr.concat(value)連接數組將接收的參數放到數組末尾,返回一個新的數組, 不會改變原有的數組。
arr.slice(star,end)截取數組只有一個參數的情況下, 會截取從該參數指定的位置開始到數組結束
有兩個參數的情況下,會截取從star指定的位置開始到end指定的位置的前一個元素, 不包括end。
*如果值為負數, 則實際的值為 length 加上該負值。不會改變原有的數組。
arr.splice(index,num,add1*…)
刪除/插入數組
第1個參數為要操作(刪除/插入)的起始位置, 第2個參數為要刪除的個數,
從第3開始的參數為要插入的元素,使用前插法,即插入的項目會在操作位置之前
*會改變原有的數組, 返回值為被刪除的元素。
arr.indexOf(item,index)查找數組參數分別為: 要查找的元素, 從哪里開始查找(下標)。從數組開頭往后方向查找。
返回該元素第一次出現的位置(下標), 如果未找到,則返回-1。*使用===全等操作。
arr.lastIndexOf(item,index)同indexOf,不過是從數組末尾往前方向查找。
迭代方法都接收2個參數,對每一項運行的 函數 和 this 的值(可選)
arr.every(fun,this)如果函數對每一項都返回true,則 every() 返回 true,否則返回false
arr.some(fun,this)如果函數對任一項返回true,則 some() 返回 true,否則返回false
arr.filter(fun,this)對每一項運行函數,filter()會返回函數運行結果為true的元素組成的數組
arr.map(fun,this)對每一項運行函數,map()會返回每次函數調用結果組成的數組
arr.forEach(fun,this)單純對每一項運行函數,forEach() 沒有返回值
歸并方法迭代數組所有項, 然后構建一個最終返回值
arr.reduce(fun,initvalue)接收2個參數,分別為每一項上調用的函數, 歸并的初始值**(可選)
傳入的函數接收
4**個參數分別為: 前一個值, 當前值, 當前項的索引, 數組對象本身
從第一項遍歷到最后一項, 函數返回的任何值都會傳遞給下一項。
arr.reduceRight(fun,initvalue)同reduce,不過遍歷方向是從最后一項到第一項。

Date類型

創建一個日期對象: var date = new Date() //創建當前日期的Date對象

如果要創建指定日期和事件的Date對象, 則必須傳入毫秒數(Number類型), 該毫秒數為1970年1月1日 0:00:00起至該日期經過的毫秒數。

var date = new Date(Date.parse("2018/8/8 12:00:00")); // 2018年8月8日 12:00:00 var date2= new Date(Date.UTC(2018,7,8,12,00,00)); // 2018年8月8日 12:00:00 var date2= new Date(1533700800000) // 2018年8月8日 12:00:00 創建特定日期時間的Date方法返回1970年1月1日 0:00:00起至該日期經過的毫秒數(Number)
Date.parse(string)接收一個用字符串表示的日期, 返回毫秒數
如果字符串不能表示日期, 則返回 NaN
Date.UTC(年,月-1,天,時,分,秒,毫秒)傳入參數表示日期, 月份是從0開始算的(一月是0,十二月是11)
前2個參數是必須的, 后面的參數如果省略, 則設為0。返回毫秒數
Date.now()返回調用這個方法時的日期時間的毫秒數
*如果瀏覽器不支持, 也可以使用+new Date把當前日期的Data對象轉為Number類型
Date繼承的方法說明
date.toString()返回字符串形式的日期
Wed Aug 08 2018 12:00:00 GMT+0800 (中國標準時間)
date.toLocaleString()根據所在區域的返回字符串形式的日期
2018/8/8 下午12:00:00
date.valueOf()返回當前日期的毫秒數形式
1533700800000

RegExp類型

創建正則表達式:var exp=/express/flags;每個正則表達式都可帶有標志(flags):
g 表示全局模式, 會應用于所有字符串, 每次調用后, index不會歸0。
i 表示不區分大小寫。
m 表示多行模式, 在到達文本末尾時還會繼續查找下一行。
javascript 正則表達式不支持后發斷言。
RegExp對象的 toString() 和 toLocaleString() 方法都會返回正則表達式的字面量形式, 與創建方式無關。

var exp = /\.at/gim //匹配.at var exp2= new RegExp("\\.at","gi") //使用RegExp構造函數要對元字符進行雙重轉義 exp.toString(); //返回 /\.at/gim exp2.toString(); //返回 /\.at/gim RegExp實例屬性作用于單個正則表達式實例
global布爾值,表示是否設置了g標志
ignoreCase布爾值,表示是否設置了i標志
multiline布爾值,表示是否設置了m標志
lastIndex整數,表示開始搜索下一個匹配項的字符位置 (匹配項的下一個元素)
source正則表達式的字符串表示
RegExp實例方法作用于單個正則表達式實例
exp.exec(string)接收一個字符串參數, 返回包含第一個匹配項的數組
exp.test(string)接收一個字符串參數, 如果有匹配項, 返回true, 否則返回false
RegExp構造函數的屬性適用于作用域中的所有正則表達式
RegExp.input 或RegExp[$_]最近一次要匹配的字符串
RegExp.lastMatch 或RegExp["$&"]最近一次的匹配項
RegExp.lastparen 或RegExp["$+"]最近一次匹配的捕獲組(一對括號就是一個捕獲組)
RegExp.leftContext或RegExp["$`"]|inpu字符串中lastparen之前的位置
RegExp.rightContext或RegExp["$'"]inpu字符串中lastparen之后邊的位置
RegExp.multiline或RegExp["$*"]布爾值,是否所有的表達式都使用多行模式

*非有效的ECMAScript標識符要用方括號語法訪問


Function類型

  • 函數名實際上是一個指向函數對象的指針
  • 使用不帶括號的函數名是訪問函數指針, 而非調用函數。
  • 重復定義函數, 后面的函數會覆蓋前面的函數。
  • 函數聲明會得到變量提升, 未執行之前可以使用。函數表達式則不會, 必須執行到它所在的代碼, 才能使用。
  • 函數可以作為參數傳遞給另一個函數, 也可以將函數作為另一個函數的結果返回。
callee屬性
`callee`屬性是一個指針,指向擁有argument對象的函數(當前函數),常用于遞歸函數, 分離函數的執行與函數名。 **不能用于嚴格模式!** function fun(x,y){argument.callee() //指向fun函數(函數本身) }
caller屬性
`caller`屬性保存調用當前函數的函數的引用 (誰調用了它) , 在全局作用域中調用, 會返回 `null` 。 **不能用于嚴格模式!** ```js function fun(){ return fun.caller; } function otherfunction(){ console.log(fun()); } console.log(fun()); //null otherfunction(); //otherfunction ```
this屬性
`this`指向函數執行的環境對象( 函數本身所在的作用域 )。 在**全局**作用域中調用, `this`指向`window`。**嚴格模式**下, 全局環境中的`this`指向`undefined`。 window.color="red"; var o={color."blue"};function sayColor(){alert(this.color); //this指向函數本身所在的作用域 }sayColor(); //此時函數本身的作用域是window, 所以返回"red" o.sayColor=sayColor; o.sayColor(); //o.sayColor()的作用域是o對象, 所以返回"blue"
length屬性和prototype屬性
`length`屬性表示函數希望接收的**命名參數**的個數。 `prototype`屬性保存著所有實例的方法, 無法枚舉。
apply方法
apply方法接收2個參數, 一個是運行函數的作用域 (讓this指向哪里) , 另一個是參數數組。 apply需要把參數打包成**數組**傳入。
call方法
同apply, 不同的地方是call的參數是**逐個**傳給函數。這2個方法都可用來擴大作用域。
bind方法
bind方法會創建一個函數實例, 然后其`this`的值會被綁定傳給bind()函數的值。 var o={color."blue"}; function sayColor(){alert(this.color); } var objectSayColor=sayColor.bind(o); //將對象o作為objectSayColor函數的this

基本包裝類型

基本包裝類型有:`Boolean`、`Number`、`String`。 每當讀取一個基本類型的值時, 后臺就會創建一個對應的基本包裝類型。 自動創建的基本包裝類型只存在于代碼執行瞬間, 然后立即被摧毀, 所以不能在運行時添加屬性和方法。
Boolean類型
var bo1 = new Boolean(false); //創建一個Boolean類型的基本包裝對象, 初始值為false var bo2 = new Boolean(2); //2會被自動轉為true var bo3 = true; //字面量創建的Boolean基本類型 alert(bo1 && true) //返回true, 因為布爾表達式中 對象 會被轉為true, 不論其初始值 //盡量不要使用Boolean構造函數, 容易造成誤解。 typeof bo1; //object (對象) typeof bo3; //boolean (基本類型) typeof bo2.valueOf() //boolean

Boolean對象的 valueOf() 方法會返回基本類型的true 或者 false。

Number類型
```js var value = 25; var number = Number(value); //轉換為數字的函數 Number() alert(typeof number); //number (基本類型)

var obj = new Number(value); //使用構造函數 new Number()
alert(typeof obj); //object (基本包裝類型的對象)

![Number類型的基本包裝對象](https://img-blog.csdn.net/20180823131903682?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMTM1Nzg0MDcw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) |Number基本包裝對象實例的方法 | 作用于 | |:-------------|:-------------| |*num*.valueOf()|返回Number對象的**基本類型Number**的數值| |*num*.toString(*radix*)|返回數值的**字符串**形式, 可以接收一個參數, 指定返回幾進制的字符串形式。| |*num*.toLocaleString()|根據瀏覽器設置的區域, 返回對應的**字符串**形式,沒有參數。<br>中國地區會把數字每三位用逗號隔開。如:1,256,345| |*num*.toFixed(*number*)|接收一個數值, 按指定數值保留小數點后的位數, 返回**字符串**的形式 (標準為0~20位)| |*num*.toExponential(*number*)|同toFixed(),不過是**返回**以指數表示法(e表示法)表示的字符串形式。如 1.26e+6| |*num*.toPrecision(numnber)|接收一個數值參數, 表示返回的數值的**所有數字位數**(不包括指數部分)。 <br>位數不夠的話, 返回結果**可能會向上或向下舍入**<br>返回的形式可能是fixed的形式或者e表示法, 超出指定位數時將其轉換為e表示法。| <h5>String類型</h5> string對象的`length`屬性表示字符串的長度。 string對象的`valueOf()`, `toString()`,`toLocaleString()` 都返回String對象的**基本類型**值。 |字符方法|操作單個字符| |:-|:-| |*str*.charAt(*index*)|返回指定位置的字符, 跟方括號加索引一樣。<br>`str.charAt(1)`等同于`srt[1]`| |*str*.charCodeAt(*index*)|返回指定字符的**編碼**。如:字母'e'會返回101(*Number類型*)||字符串方法|操作整個字符串(不會改變原有的字符串)| |:-|:-| |*str*.concat(*string1+,string2,...*)<font color="B6B6B6">連接字符串</font>|接收**一或多**個字符串, 并依次把他們放到與原字符串連接起來, **返回**連接后的字符串| |*str*.slice(*star,end?*)<font color="B6B6B6">按位置截取字符串</font>|返回截取后的字符串,參數為開始的位置,結束位置的下一個位置(不會包含end的位置)<br>對于**所有的負值參數, 會與length相加**。如果省略第二個參數, 則截取到末尾。| |*str*.substring(*star,end?*)<font color="B6B6B6">按位置截取字符串</font>|同slice(), 不同的是,substring()會把**所有的負值參數轉換為0** | |*str*.substr(*star,howmany?*)<font color="B6B6B6">按**個數**截取字符串</font>|返回按個數截取后的字符串,參數為:開的位置,截取的個數。<br>如果第一個參數為**負值,則與length相加**,如果第二個參數為**負值, 則轉換為0**。<br>如果省略第二個參數, 則截取到末尾。| |*str*.indexOf(*item,index?*)和<br>*str*.lastIndexOf(*item,index?*)<font color="B6B6B6">位置查找</font>|跟Array的indexOf()和lastIndexOf()一樣| |*str*.trim()<font color="B6B6B6">|將字符串兩邊的空白去掉,并返回去掉空白后的字符串。| |*str*.toUpperCase()|把字符串全部變為大寫并返回, 可以對單個字符操作。| |*str*.toLowerCase()|把字符串全部變為小寫并返回, 可以對單個字符操作。| |*str*.match(*reg*)<font color="B6B6B6">正則匹配</font>|接收一個參數, 可以是正則表達式或者RegExp對象, **返回匹配項數組**。跟*reg*.exec()一樣| |*str*.search(*reg*)|與match()一樣, 不同的是返回的是第一個匹配項的**索引**, 未找到則返回-1。| |*str*.replace(*reg\|str*,*str\|fun*)<font color="B6B6B6">替換字符串</font><sup>[[1]](#replace)</sup>|接收2個參數, 第1個參數可以是正則表達式(RegExp)或者字符串, <br>第2個參數可以是字符串或者函數。然后進行替換操作,返回替換后的新字符串。| |*str*.split(*string\|reg,number*)<font color="B6B6B6">分割字符串</font><sup>|按指定方式將字符串分割成多個字符串,返回分割后字符串組成的數組。<br>第1個參數可以是字符串或者正則表達式, 不會包含在結果里。<br>第2個參數指定返回的數組的長度。| |*str*.localeCompare(*string*)|與參數所給的字符串比較, 如果該字符串在參數所給的字符串在之前,則返回負值,<br>如果該字符串在參數所給的字符串在之后,則返回正值,位置相等返回0| |**String**.fromCharCode(*charcode+*)|接收一或多個字符編碼, 然后把他們轉為一個字符串|<h5 id="replace">replace()方法</h5> 接收2個參數, 第1個參數可以是正則表達式(或RegExp對象)或者字符串, 第2個參數可以是字符串或者函數。 如果第一個參數是字符串, 那么**只會替換第一個**匹配項, 如果要替換所有的匹配項, 則要用正則表達式, 并且要指定`g`標志。

var text = “cat, bat, sat, fat”;
//第一個參數為字符串, 所以只會替換第一個匹配項
var result = text.replace(“at”,“ond”); //“cond,bat,sat,fat”
//第一個參數是正則表達式, 并且指定g標志, 所以會替換所有的匹配項
result=text.replace(/at/g,“ond”) //“cond,bond,sond,fond”

如果第二個參數是**函數**:會向該函數傳遞參數分別為: **模式匹配項**(匹配到的字符), *(捕獲組1)*,*(捕獲組2)*...,**模式匹配項在字符中的位置**(索引),**原始字符串** 如果沒有捕獲組, 則為3個參數。模式匹配項在字符中的位置(索引)和原始字符串始終在參數的**最后** 該函數必須返回一個**字符串**。

var s=“cat,bat,hat,rat”
var r=s.replace(/.at/g,function(){
console.log(arguments[0]); //模式匹配項(此時是"cat")
console.log(arguments[1]);
console.log(arguments[2]);
console.log(arguments[3]);
console.log(“倒數第二個參數”+arguments[arguments.length-2]); //模式匹配項在字符中的位置
console.log(“最后一個參數”+arguments[arguments.length-1]); //原始字符串
return “ing”
})
console.log? // “cing,bing,hing,ring”

<h2 id="dtnz">單體內置對象</h2> 由ECMAScript提供的,不依賴宿主環境對象,如`Object`, `Array`, `String`,`Global`, `Math` |URI編碼方法|對URI進行編碼/解碼| |:-|:-| |encodeURI(*string*)|主要用于對整個URI編碼, 不會對特殊字符進行編碼。| |encodeURIComponent(*string*)|主要用于對URI中的某一段進行編碼, 會對任何非標準字符進行編碼。| |decodeURI(*string*)|只能對encodeURI()替換的字符進行解碼| |decodeURIComponent(*string*)|用于對encodeURIComponent()編碼過的字符進行解碼, 可以解碼任何特殊字符的編碼|<h5>eval()方法</h5> eval(*"code"*)接收一個參數, 即要執行的**JavaScript字符串**。通過eval()執行的代碼, **與eval()自身所在的環境作用域是相同的。** 在eval()中創建的任何變量和函數都**不會得到變量提升**。 嚴格模式下對eval賦值會導致錯誤, 在外部也訪問不了eval()中創建的任何變量和函數。<h5>Math對象</h5> Math對象用于數學計算 |Math對象的屬性|一些數學計算中可能用到的特殊值| |:-|:-| |`Math.E`|常量e| |`Math.PI`|即π, 圓周率| |`Math.LN10`|10的自然對數| |`Math.SQRT1_2`|$\dfrac{1}{2}$的平方根| |`Math.SQRT2`|2的平方根||Math對象的方法|數學計算的方法| |:-|:-| |**Math**.max(*Number+*)|接收多個數值參數, 返回其中的**最大值**| |**Math**.min(*Number+*)|接收多個數值參數, 返回其中的**最小值**| |**Math**.ceil(*Number*)|對參數進行**向上舍入**, 并返回。| |**Math**.floor(*Number*)|對參數進行**向下舍入**, 并返回。| |**Math**.round(*Number*)|對參數進行**四舍五入**, 并返回。| |**Math**.random()|返回大于等于0小于1的一個隨機數(0≤x<1)<br>可以用`Math.random()*可能值的總數+初始值`來從某個范圍內隨機選擇一個數<br>如:`Math.floor(Math.random()*9+2)`從2-10中選一個數| |**Math**.abs(*Number*)|返回絕對值| |**Math**.exp(*Number*)|返回e的*number*次冪| |**Math**.pow(*Number*,*power*)|返回*number*的*power*次冪| |**Math**.sqrt(*Number*)|返回*number*的平方根| |**Math**.log(*Number*)|返回*number*的**自然對數**| |**Math**.sin(*x*)|返回*x*的正弦值| |**Math**.asin(*x*)|返回*x*的反正弦值|

總結

以上是生活随笔為你收集整理的JavaScript 引用类型 读书笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男人的天堂色偷偷 | 好吊一区二区三区 | 精品熟妇视频一区二区三区 | 久久精品系列 | 山村淫强伦寡妇 | 久久久久久国产精品无码 | 青青草自拍视频 | 天堂综合在线 | av大帝在线 | av手机在线 | 手机av在线看 | 国产老妇视频 | 一区二区色 | 亚洲一区国产精品 | 黄色三级三级三级 | jzz国产| 91福利在线视频 | 在线免费观看毛片 | 久久久久无码国产精品一区李宗瑞 | 免费成人电影在线观看 | 亚洲第一免费播放区 | 中国黄色a级片 | www 在线观看视频 | 国产成人精品一区二区三区网站观看 | 久久国产乱 | 99色在线| 精品成人免费视频 | 久久色资源网 | 欧美性三级 | av看片| 国产成人综合亚洲 | 免费在线观看不卡av | 黄色国产在线观看 | 男女激情在线观看 | 青青青草视频 | 国产成人精品午夜福利Av免费 | 一本—道久久a久久精品蜜桃 | 激情欧美一区二区三区 | 亚洲国产私拍精品国模在线观看 | 四虎影院在线视频 | 国产视频污 | 美女扒开屁股让男人桶 | 亚洲尤物在线 | 九九热国产| 玉蒲团在线| 一区二区三区黄色录像 | 超碰天天干 | 精品一区二区三区在线观看 | 性久久久久久久久久久久 | 99re在线视频 | 人妖性生活视频 | 91视频免费入口 | 中文字幕一区二区三区人妻四季 | 欧美精品123区 | 一区二区三区免费观看视频 | 懂色一区二区三区 | 欧美第一页草草影院 | 精品国产一区二区三区四区阿崩 | 污污内射在线观看一区二区少妇 | www.av网址 | 嫩草影院黄色 | 伊人免费 | 日韩一区二区免费看 | 在线观看黄网址 | 国产成人精品一区二区 | 高清三区| av一区二区三区免费观看 | 性生交大片免费看视频 | jiizzyou欧美2| 亚洲涩综合 | www.在线观看麻豆 | 久久免费黄色 | 成人免费aaa | 国产h片在线观看 | 欧洲美一区二区三区亚洲 | 精品免费视频 | 国产三级播放 | 精品在线一区 | 这里只有精品视频在线 | 国产精品99久久久久久一二区 | 91精品国产麻豆国产自产在线 | 中国一及毛片 | 奇米超碰在线 | 国产一区在线免费 | 成人在线不卡视频 | 五月婷婷六月综合 | 花房姑娘免费全集 | 狠狠干老司机 | 国产精品五月天 | 亚洲天堂免费视频 | 一区二区视频播放 | 人妻在线一区二区三区 | 亚洲精品在线一区二区 | 国产又爽又色 | 一本色道久久88亚洲精品综合 | 欧美色亚洲 | 青娱乐久久 | 精品无码一区二区三区蜜臀 | 在线免费观看日韩 |