摘要:,通過原型上的方法,判斷對象所屬類型數(shù)據(jù)的操作方法基本數(shù)據(jù)類型的所有方法操作都不改變原始值。對象類型的數(shù)據(jù),操作過程中始終留意引用地址的中轉(zhuǎn)概念,其原型上方法有會改變和不改變原值的兩種類型。
數(shù)據(jù)類型分類
基礎(chǔ)類型:string,number,boolean,undefined,null,symbol
對象類型:object
基礎(chǔ)類型為原始值,其值不能被修改;對象類型為引用類型,可以理解為指針,通過引用類型找到內(nèi)存中的地址,然后再進(jìn)行相關(guān)操作。
// 基本類型 var a = 10; var b = a ; a = 20; console.log(b); // 10 // 對象類型 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)過 typeof 操作符操作后返回的是 object;特例2,函數(shù)隸屬于對象,typeof 操作直接返回 function。
instanceof,可以判斷通過 new 操作符生成的各種數(shù)據(jù)類型
var str = "hello"; str instanceof String ; // false new String("hello") instanceof String; // true // number,booelan 同理,(null,undefined,symbol沒有構(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 左邊對象的原型是不是在右邊對象的原型鏈中。
toString,通過 Object 原型上的 toString 方法,判斷對象所屬類型
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ù)類型的所有方法操作都不改變原始值。對象類型的數(shù)據(jù),操作過程中始終留意引用地址的中轉(zhuǎn)概念,其原型上方法有會改變和不改變原值的兩種類型。
// 基本類型 var str = "hello"; str.toUpperCase(); // 僅返回值為 "HELLO",并不是直接在原值上修改 console.log(str); // "hello" // 對象類型 // 改變值 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í)則對應(yīng)的是內(nèi)存中 [8,9] 數(shù)組的引用地址,比如 x0001 var arr4 = arr3; // arr4 為 arr3 的值,即為 x0001 arr4[0]= 10; // 在對地址進(jìn)行操作和讀值時,則又通過引用找到對應(yīng)的區(qū)域進(jìn)行讀寫操作 arr3; // [10,9]
引用類型可以簡單地類比成計算機(jī)中的快捷方式。
常用又較容易混淆的操作方法:
String剪切
方法名 | 說明 |
---|---|
slice(start,end) | start和end都可以為負(fù)數(shù),皆代表位置索引,從start往字符串右邊向剪切,end位置若在start左邊,則返回為空, |
substr(start,length) | start可為負(fù),表示定位到剪切的起始位置,length需為正數(shù),表示從起始位置往右截取的長度。 |
substring(index1,index2) | Index1 和 index2 都為正數(shù)皆代表位置索引,兩者無序即總是取兩者之間的字符 |
toFixed(length),返回字符串;僅對小數(shù)點(diǎn)位后,做特定長度的截取,不夠長度則補(bǔ)0,四舍五入。
var num = 123.5368; num.toFixed(2); // "123.54" num.toFixed(1); // "123.5" num.toFixed(6); // "123.536800"Array
slice 和 splice
方法名 | 說明 |
---|---|
slice(start,end) | start和end都可以為負(fù)數(shù),皆代表位置索引,從start元素往數(shù)組右邊淺拷貝,不包括end位置元素,end 位置若在 start 左邊,則返回空數(shù)組(類似字符串的slice),操作不影響原數(shù)組。 |
splice(start,len,…eles) | start代表索引位置,可為負(fù);len表示要刪除的個數(shù),eles 表示要在刪除的位置中插入的元素,可多個。操作會影響到原數(shù)組。返回的為刪除的元素數(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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/104890.html
摘要:二類型轉(zhuǎn)換隱式類型轉(zhuǎn)換轉(zhuǎn)換為字符串類型任意類型轉(zhuǎn)換為類型任意類型一個加號加任意類型轉(zhuǎn)換為類型任意類型顯式類型轉(zhuǎn)換轉(zhuǎn)換為字符串類型轉(zhuǎn)換為類型將字符串或布爾值轉(zhuǎn)換為整數(shù)類型。 內(nèi)容簡介: 一.數(shù)據(jù)類型簡介 ———— 原始類型 ———— 引用類型 二.數(shù)據(jù)類型之間的轉(zhuǎn)換 一、數(shù)據(jù)類型簡介 數(shù)據(jù)類型主要分為原始類型(也有稱為基本類型/原始值)和引用類型。 1.原...
摘要:運(yùn)算符可以用來檢測某個構(gòu)造函數(shù)的屬性是否存在于另外一個要檢測對象的原型鏈上。使用方法可以獲取到變量的準(zhǔn)確的數(shù)據(jù)類型就能解決基本包裝類型的檢測錯誤和的檢測不安全。 本文共 1750 字,讀完只需 7 分鐘 數(shù)據(jù)類型有哪些? ECMAScript 的數(shù)據(jù)類型分為簡單數(shù)據(jù)類型(也被稱為基本數(shù)據(jù)類型,原始數(shù)據(jù)類型): Undefined Null String Number Boolean ...
摘要:要確保沒有低估需要存儲的值的范圍,更小是相對與數(shù)據(jù)類型的最大值范圍來講的。如果無法確定哪個數(shù)據(jù)類型是最好的,就選擇你認(rèn)為不會超過范圍的最小類型。整數(shù)類型有兩個類型的數(shù)字整數(shù)和實(shí)數(shù)。列默認(rèn)為,這與其他的數(shù)據(jù)類型不一樣。 簡述 良好的邏輯設(shè)計和物理設(shè)計是高性能系統(tǒng)的基石,比如反范式設(shè)計可以加快某些類型的查詢同時也會影響另外一些類型的查詢效率,所以我們必須重視Mysql對于數(shù)據(jù)庫的設(shè)計(本...
閱讀 2058·2021-11-11 16:54
閱讀 1039·2021-10-12 10:12
閱讀 377·2019-08-30 15:43
閱讀 646·2019-08-29 13:15
閱讀 1075·2019-08-29 13:12
閱讀 1524·2019-08-26 12:09
閱讀 1655·2019-08-26 10:24
閱讀 2250·2019-08-26 10:15