摘要:,通過(guò)原型上的方法,判斷對(duì)象所屬類型數(shù)據(jù)的操作方法基本數(shù)據(jù)類型的所有方法操作都不改變?cè)贾?。?duì)象類型的數(shù)據(jù),操作過(guò)程中始終留意引用地址的中轉(zhuǎn)概念,其原型上方法有會(huì)改變和不改變?cè)档膬煞N類型。
數(shù)據(jù)類型分類
基礎(chǔ)類型:string,number,boolean,undefined,null,symbol
對(duì)象類型:object
基礎(chǔ)類型為原始值,其值不能被修改;對(duì)象類型為引用類型,可以理解為指針,通過(guò)引用類型找到內(nèi)存中的地址,然后再進(jìn)行相關(guān)操作。
// 基本類型 var a = 10; var b = a ; a = 20; console.log(b); // 10 // 對(duì)象類型 var c = { name:"hello"}; var d = c ; c.name = "world"; console.log(d.name); // "world"數(shù)據(jù)的創(chuàng)建 string
var str1 = "hello"; var str2 = new String("hello"); var str3 = `${"hello"}abc` // 其他類型轉(zhuǎn)換成字符串 ["h","e","l","l","o"].join(""); // "hello" var num = 123; num += ""; num.toString(); String(num); // "123" String(true); // "true"number
var num1 = 123; var num2 = new Number(123); var num3 = parseInt("12px"); // 12 var num4 = parseFloat("12.22px"); // 12.22 var num5 = Number("123");boolean
var boo1 = true; var boo2 = New Boolean(true); var a = 1; var boo2 = !!a; // trueundefined
var undef = undefined; var a; a; // undefined數(shù)據(jù)類型判斷
typeof,獲取值的所屬類型以字符串形式返回
typeof "hello"; // "string" typeof 123; // "number" typeof true; // "boolean" typeof undefined; // "undefined" typeof null; // "object" (特例1) typeof Symbol("hello"); // "symbol" typeof {a:1} ; // "object" typeof function(){}; // "function" (特例2)
特例1,屬于基礎(chǔ)類型的 null 經(jīng)過(guò) typeof 操作符操作后返回的是 object;特例2,函數(shù)隸屬于對(duì)象,typeof 操作直接返回 function。
instanceof,可以判斷通過(guò) new 操作符生成的各種數(shù)據(jù)類型
var str = "hello"; str instanceof String ; // false new String("hello") instanceof String; // true // number,booelan 同理,(null,undefined,symbol沒(méi)有構(gòu)造函數(shù)) 123 instanceof Number; // false new Number(123) instanceof Number ; // true true instanceof Boolean; // false new Boolean(true) instanceof Boolean; // true
instanceof 的實(shí)質(zhì)是,判斷 instanceof 左邊對(duì)象的原型是不是在右邊對(duì)象的原型鏈中。
toString,通過(guò) Object 原型上的 toString 方法,判斷對(duì)象所屬類型
Object.prototype.toString.call("hello"); // "[object String]" Object.prototype.toString.call(123); // "[object Number]" Object.prototype.toString.call(true); // "[object Boolean]" Object.prototype.toString.call(null); // "[object Null]" Object.prototype.toString.call(undefined); // "[object Undefined]" Object.prototype.toString.call(Symbol("hi")); // "[object Symbol]" Object.prototype.toString.call(function(){}); // "[object Function]" Object.prototype.toString.call([]); // "[object Array]" Object.prototype.toString.call(new Date()); // "[object Date]" Object.prototype.toString.call(/w+/); // "[object RegExp]" Object.prototype.toString.call({}); // "[object Object]"數(shù)據(jù)的操作方法
基本數(shù)據(jù)類型的所有方法操作都不改變?cè)贾怠?p>對(duì)象類型的數(shù)據(jù),操作過(guò)程中始終留意引用地址的中轉(zhuǎn)概念,其原型上方法有會(huì)改變和不改變?cè)档膬煞N類型。
// 基本類型 var str = "hello"; str.toUpperCase(); // 僅返回值為 "HELLO",并不是直接在原值上修改 console.log(str); // "hello" // 對(duì)象類型 // 改變值 var arr1 = [1,2,3]; arr1.push(4); arr1; // [1,2,3,4] // 不改變值 var arr2 = [5,6,7]; arr2.concat(arr1); // 返回 [5,6,7,1,2,3,4] arr2; // [5,6,7] // 引用地址示例 var arr3 = [8,9]; // arr3 實(shí)則對(duì)應(yīng)的是內(nèi)存中 [8,9] 數(shù)組的引用地址,比如 x0001 var arr4 = arr3; // arr4 為 arr3 的值,即為 x0001 arr4[0]= 10; // 在對(duì)地址進(jìn)行操作和讀值時(shí),則又通過(guò)引用找到對(duì)應(yīng)的區(qū)域進(jìn)行讀寫操作 arr3; // [10,9]
引用類型可以簡(jiǎn)單地類比成計(jì)算機(jī)中的快捷方式。
常用又較容易混淆的操作方法:
String剪切
方法名 | 說(shuō)明 |
---|---|
slice(start,end) | start和end都可以為負(fù)數(shù),皆代表位置索引,從start往字符串右邊向剪切,end位置若在start左邊,則返回為空, |
substr(start,length) | start可為負(fù),表示定位到剪切的起始位置,length需為正數(shù),表示從起始位置往右截取的長(zhǎng)度。 |
substring(index1,index2) | Index1 和 index2 都為正數(shù)皆代表位置索引,兩者無(wú)序即總是取兩者之間的字符 |
toFixed(length),返回字符串;僅對(duì)小數(shù)點(diǎn)位后,做特定長(zhǎng)度的截取,不夠長(zhǎng)度則補(bǔ)0,四舍五入。
var num = 123.5368; num.toFixed(2); // "123.54" num.toFixed(1); // "123.5" num.toFixed(6); // "123.536800"Array
slice 和 splice
方法名 | 說(shuō)明 |
---|---|
slice(start,end) | start和end都可以為負(fù)數(shù),皆代表位置索引,從start元素往數(shù)組右邊淺拷貝,不包括end位置元素,end 位置若在 start 左邊,則返回空數(shù)組(類似字符串的slice),操作不影響原數(shù)組。 |
splice(start,len,…eles) | start代表索引位置,可為負(fù);len表示要?jiǎng)h除的個(gè)數(shù),eles 表示要在刪除的位置中插入的元素,可多個(gè)。操作會(huì)影響到原數(shù)組。返回的為刪除的元素?cái)?shù)組。 |
var arr = [1,2,3,4,5,6,7,8]; // slice arr.slice(-4,-1); // [5,6,7] // splice var data = arr.splice(0,1,99); arr; // [99,2,3,4,5,6,7,8] data; // [1]
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/104890.html
摘要:二類型轉(zhuǎn)換隱式類型轉(zhuǎn)換轉(zhuǎn)換為字符串類型任意類型轉(zhuǎn)換為類型任意類型一個(gè)加號(hào)加任意類型轉(zhuǎn)換為類型任意類型顯式類型轉(zhuǎn)換轉(zhuǎn)換為字符串類型轉(zhuǎn)換為類型將字符串或布爾值轉(zhuǎn)換為整數(shù)類型。 內(nèi)容簡(jiǎn)介: 一.數(shù)據(jù)類型簡(jiǎn)介 ———— 原始類型 ———— 引用類型 二.數(shù)據(jù)類型之間的轉(zhuǎn)換 一、數(shù)據(jù)類型簡(jiǎn)介 數(shù)據(jù)類型主要分為原始類型(也有稱為基本類型/原始值)和引用類型。 1.原...
摘要:運(yùn)算符可以用來(lái)檢測(cè)某個(gè)構(gòu)造函數(shù)的屬性是否存在于另外一個(gè)要檢測(cè)對(duì)象的原型鏈上。使用方法可以獲取到變量的準(zhǔn)確的數(shù)據(jù)類型就能解決基本包裝類型的檢測(cè)錯(cuò)誤和的檢測(cè)不安全。 本文共 1750 字,讀完只需 7 分鐘 數(shù)據(jù)類型有哪些? ECMAScript 的數(shù)據(jù)類型分為簡(jiǎn)單數(shù)據(jù)類型(也被稱為基本數(shù)據(jù)類型,原始數(shù)據(jù)類型): Undefined Null String Number Boolean ...
摘要:要確保沒(méi)有低估需要存儲(chǔ)的值的范圍,更小是相對(duì)與數(shù)據(jù)類型的最大值范圍來(lái)講的。如果無(wú)法確定哪個(gè)數(shù)據(jù)類型是最好的,就選擇你認(rèn)為不會(huì)超過(guò)范圍的最小類型。整數(shù)類型有兩個(gè)類型的數(shù)字整數(shù)和實(shí)數(shù)。列默認(rèn)為,這與其他的數(shù)據(jù)類型不一樣。 簡(jiǎn)述 良好的邏輯設(shè)計(jì)和物理設(shè)計(jì)是高性能系統(tǒng)的基石,比如反范式設(shè)計(jì)可以加快某些類型的查詢同時(shí)也會(huì)影響另外一些類型的查詢效率,所以我們必須重視Mysql對(duì)于數(shù)據(jù)庫(kù)的設(shè)計(jì)(本...
閱讀 2076·2021-11-11 16:54
閱讀 1055·2021-10-12 10:12
閱讀 392·2019-08-30 15:43
閱讀 656·2019-08-29 13:15
閱讀 1086·2019-08-29 13:12
閱讀 1537·2019-08-26 12:09
閱讀 1668·2019-08-26 10:24
閱讀 2274·2019-08-26 10:15