标签:prot numbers fun 字符串 创建 截取 strong span tor
在基础类库中常见的slice(8,-1)是个什么鬼?下面就从js数据类型说起。
javascrip数据类型有两种:
数据类型的判断方式:
1、typeof判断数据类型会返回一个字符串,如
1 // Numbers
2 typeof 37 === ‘number‘;
3 typeof 3.14 === ‘number‘;
4 typeof Math.LN2 === ‘number‘;
5 typeof Infinity === ‘number‘;
6 typeof NaN === ‘number‘; // 尽管NaN是"Not-A-Number"的缩写,意思是"不是一个数字"
7 typeof Number(1) === ‘number‘; // 不要这样使用!
8
9 // Strings
10 typeof "" === ‘string‘;
11 typeof "bla" === ‘string‘;
12 typeof (typeof 1) === ‘string‘; // typeof返回的肯定是一个字符串
13 typeof String("abc") === ‘string‘; // 不要这样使用!
14
15 // Booleans
16 typeof true === ‘boolean‘;
17 typeof false === ‘boolean‘;
18 typeof Boolean(true) === ‘boolean‘; // 不要这样使用!
19
20 // Symbols
21 typeof Symbol() === ‘symbol‘;
22 typeof Symbol(‘foo‘) === ‘symbol‘;
23 typeof Symbol.iterator === ‘symbol‘;
24
25 // Undefined
26 typeof undefined === ‘undefined‘;
27 typeof blabla === ‘undefined‘; // 一个未定义的变量,或者一个定义了却未赋初值的变量
28
29 // Objects
30 typeof {a:1} === ‘object‘;
31
32 // 使用Array.isArray或者Object.prototype.toString.call方法可以从基本的对象中区分出数组类型
33 typeof [1, 2, 4] === ‘object‘;
34
35 typeof new Date() === ‘object‘;
36
37 // 下面的容易令人迷惑,不要这样使用!
38 typeof new Boolean(true) === ‘object‘;
39 typeof new Number(1) ==== ‘object‘;
40 typeof new String("abc") === ‘object‘;
41
42 // 函数
43 typeof function(){} === ‘function‘;
44 typeof Math.sin === ‘function‘;
typeof在针对 对象、日期、正则、数组上的判断并不准确,返回的都是“object”,因此,我们需要另外一种办法来准确判断数据类型。
2、Object.prototype.toString()
该方法返回描述某个对象数据类型的字符串,如自定义的对象没有被覆盖,则会返回“[object type]”,其中,type则是实际的对象类型。在使用该方法检测的时候,可以使用Object.prototype.toString.call()或者Object.prototype.toString.apply()进行测试,如
1 var toString = Object.prototype.toString;
2 toString.call(new Date);//[object Date]
3 toString.call(new String);//[object String]
4 toString.call(Math);//[object Math]
5 toString.call(undefined);//[object Undefined]
6 toString.call(null);//[object Null]
因此,引出Object.prototype.toString.call(obj).slice(8,-1),如
Object.prototype.toString.call(‘ESStudio balabala……‘);
//"[object String]"
Object.prototype.toString.call(‘ESStudio balabala……‘).slice(8,-1);
//"String"
slice(startIndex,endIndex),从0开始索引,其中8代表从第8位(包含)开始截取(本例中代表空格后面的位置),-1代表截取到倒数第一位(不含),所以正好截取到[object String]中的String。
结题。
JavaScript 基础知识系列:数据类型及slice(8,-1)
标签:prot numbers fun 字符串 创建 截取 strong span tor
原文地址:https://www.cnblogs.com/EFPlatform/p/10141360.html