大家好敬察,我是IT修真院鄭州分院第三期的學(xué)員高雪峰薪捍,一枚正直、純潔抽兆、善良的前端程序員
今天給大家分享一下识补,修真院官網(wǎng)JS(職業(yè))任務(wù)1,深度思考中的知識點——JS有哪些數(shù)據(jù)類型和常用方法
1.背景介紹
我們目前對Javascript多少都有一些了解和使用辫红。其中最基礎(chǔ)的凭涂,就是js的數(shù)據(jù)類型,分為兩大塊贴妻,一個是基本數(shù)據(jù)類型切油,包括:undefined、null名惩、boolean澎胡、number、string等娩鹉;一個是引用數(shù)據(jù)類型攻谁,包括object、array弯予、Date戚宦、RegExp等。在引用類型中锈嫩,還有三個特殊的引用類型受楼,和基本數(shù)據(jù)類型相似,我們接下來來認識一下:boolean呼寸、number艳汽、string。
2.知識剖析
2.1 特殊的引用類型之string
var a = "Hello World!";
var b = a.substring(3);
console.log(b);? // "lo World!"
如同上邊代碼所示对雪,字符串是一個基本數(shù)據(jù)值河狐。但是,我們知道基本數(shù)據(jù)類型不是對象慌植,在邏輯上來講甚牲,它不應(yīng)該有方法义郑,但是上邊的substring()是如何實現(xiàn)的呢蝶柿?詳細剖析的話,我們可以把它分成一下這種步驟:
var a = new String("Hello World!");//創(chuàng)建String類型的一個實例非驮;
var b = a.substring(3); //在實例上調(diào)用指定的方法交汤;
a = null; //銷毀這個實例;
console.log(b);? // "lo World!"
通過上一頁的代碼細節(jié)的展示,我們可以看出芙扎,基本類型的字符串就變成了和對象一樣星岗。這就引入了基本包裝類型的概念:每當(dāng)讀取一個基本類型值的時候,后臺就會創(chuàng)建一個對應(yīng)的基本包裝類型的對象戒洼,從而讓我們能夠調(diào)用一些方法來操作這些數(shù)據(jù)俏橘。
作為特殊的引用類型,其與引用類型的的主要區(qū)別在于對象的生存期上圈浇。使用new或者其他簡寫的方法創(chuàng)建引用類型的實例寥掐,在執(zhí)行六離開當(dāng)前作用域之前都一直保存在內(nèi)存中。自動創(chuàng)建的基本包裝類型的對象磷蜀,則只存在于一行代碼執(zhí)行的瞬間召耘,然后立即被銷毀了。這就意味著褐隆,不能在運行時為基本類型值添加屬性和方法污它。
var a = "something";
a.color = "red";
console.logo(a.color); //undefined
String類型在ECMAScript中提供了一些方法,用于對字符串進行解析和操作庶弃。
//字符方法
var svalue = "Hello World!";
console.log(svalue.length); ? // 12
console.log(svalue.charAt(4)); ?// o ?首位和數(shù)組一樣衫贬,index從0開始
console.log(svalue.charCodeAt(4)); //這里會顯示字符編碼
console.log(svalue[3]); //這個方法支持IE8+ 及所有其他瀏覽器,顯示結(jié)果和svalue.charAt(3)一樣
字符串的方法:
concat()用于對一個或者多個字符串進行拼接顯示虫埂,生成新的字符串祥山,不會影響原有字符串。
//字符串方法
var svalue = "Hello";
var result = svalue.concat("Da Wa");
console.log(result);
console.log(svalue);
var b = svalue + 'Er Wa';
相比于concat()方法掉伏,我們一般較多使用的是 “+”的方法進行字符串的拼接顯示缝呕,也比較方便簡單。
還有三種創(chuàng)建新字符串的方法:slice()斧散、substr()供常、substring()。以上三種方法都可輸入1到2個參數(shù)鸡捐。三種方法的第一個參數(shù)都是指字符串操作的起始位置栈暇,slice()、substring()的第二個參數(shù)指的是結(jié)束位置后一個位置的箍镜,substr()的第二個參數(shù)則指的是從第一個參數(shù)開始的位置起要返回的字符的個數(shù)源祈。這里注明一下。同時在參數(shù)為負值時的表現(xiàn)效果和定義也不一致色迂,需要注意香缺!
var a = "tianqingle";
console.log(a.slice(3)); //“nqingle”
console.log(a.substring(3)); //“nqingle”
console.log(a.substr(3)); //“nqingle”
console.log(a.slice(3, 7)); //"nqin"
console.log(a.substring(3, 7)); //"nqin"
console.log(a.substr(3, 7)); //“nqingle”
2.4 特殊的引用類型之Boolean
var aobj = new Boolean(false);
var result = aobj && true;
console.log(result); ? // ?true
var bvalue = false;
result = bvalue && true;
console.log(result); // ?false
在布爾值運算中,fals&&true返回false歇僧,一假全假图张;布爾表達式中所有對象會返回true。
console.log(typeof aobj); ?//object
console.log(typeof bvalue); // ?boolean
console.log(aobj instanceof Boolean); ? // ?true
console.log(bvalue instanceof Boolean); ?// ?false
由于以上的原因,建議輕易不要使用Boolean對象祸轮。
2.3 特殊的引用類型之Number
Number類型是與數(shù)字值對應(yīng)的引用類型兽埃。
var num = new Number(100);
console.log(num.toString()); ? ?// ?"100"
console.log(num.toLocaleString()); ?// ?"100"
console.log(num.valueOf()); ? // ?100(數(shù)字,不是字符串适袜,和上邊有區(qū)別)
console.log(num.toFixed(3));? //? 100.000
console.log(num.toExponential(3));? //? ? 1.000e+2 (指數(shù)顯示)
console.log(num.toPrecision(2));? ? //? ? 1.0e+2 ?(根據(jù)需要顯示的位數(shù)柄错,自行判斷是使用指數(shù)顯示還是整數(shù)顯示或者浮點數(shù)顯示) ? 支持1到21位小數(shù)
與Boolean類型一樣,同樣不建議顯式實例化Number類型苦酱,原因同Boolean類型一樣鄙陡,在使用valueOf()和instanceof()方法時會出現(xiàn)容易讓人誤解的結(jié)果,從而造成混亂躏啰。
3.常見問題
問題: 如何分割一個很長的字符串趁矾?
4.解決方案
通過字符串模式匹配的方法。
var s = "天上的云给僵,地上的水毫捣,水清了,就可以低頭看見天上的云帝际!"蔓同;
var b = s.split(',');
var c = s.split(',',2);
console.log(b); ?// ?會顯示一個分割后的字符串?dāng)?shù)組
console.log(c); ? // ?根據(jù)顯示的項數(shù),只顯示前幾項
5.編碼實戰(zhàn)
參看上邊簡單的demo演示蹲诀,暫無更多demo斑粱!
6.擴展思考
問題: 如何替換子字符串的內(nèi)容?
這里使用了replace()的方法:
var h = "cat, bat, sat, fat";
console.log(h.replace("at", "ond")); ?// ?只會修改第一個與“at”相匹配的內(nèi)容
console.log(h.replace(/at/g, "end")); ?// ?使用正則脯爪,由于追加使用全局g则北,會將全部與“at”匹配的內(nèi)容都更換掉
7.參考文獻
參考一:JavaScript高級程序設(shè)計
8.更多討論
討論點:大家對于基本包裝類型還有哪些認識,分享一下痕慢?
PPT: https://ptteng.github.io/PPT/PPT/js-01-JS%20basic%20package%20type.html#/
視頻鏈接:https://v.qq.com/x/page/d0517gyp303.html
文本鏈接: http://www.jnshu.com/daily/26631?dailyType=others&total=152&page=1&uid=7446&sort=0&orderBy=3
------------------------------------------------------------------------------------------------------------------------
技能樹.IT修真院
“我們相信人人都可以成為一個工程師尚揣,現(xiàn)在開始,找個師兄掖举,帶你入門快骗,掌控自己學(xué)習(xí)的節(jié)奏,學(xué)習(xí)的路上不再迷盟危”方篮。
這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學(xué)習(xí)路線励负,學(xué)習(xí)透明化藕溅,成長可見化,師兄1對1免費指導(dǎo)熄守◎诳澹快來與我一起學(xué)習(xí)吧~
你可以直接點擊此鏈接:http://jnshu.com/login/1/84959420