-
typeof
-
1. 对于原始类型来说,除了 null 都可以调用typeof显示正确的类型 typeof 1 // 'number' typeof '1' // 'string' typeof undefined // 'undefined' typeof true // 'boolean' typeof Symbol() // 'symbol' typeof null // 'object' 2. 但对于引用数据类型,除了函数之外,都会显示"object"。 typeof [] // 'object' typeof {} // 'object' typeof console.log // 'function' 3. 因此采用typeof判断对象数据类型是不合适的,采用instanceof会更好,instanceof的原理是基于原型链的查询,只要处于原型链中,判断永远为true 4. 如果是null 则返回object 5. https://blog.csdn.net/qq_38722097/article/details/80717240
-
1. typeof 一般被用于判断一个变量的类型 2. 我们可以利用 typeof 来判断number, string, object, boolean, function, undefined, symbol 这七种类型 3. 在判断不是 object 类型的数据的时候,typeof能比较清楚的告诉我们具体是哪一类的类型 4. typeof 在判断一个 object的数据的时候只能告诉我们这个数据是 object, 而不能细致的具体到是哪一种 object typeof是一个运算符,有2种使用方式:typeof(表达式)和typeof 变量名,第一种是对表达式做运算,第二种是对变量做运算。
-
-
instanceof
-
核心: 原型链的向上查找。(右侧构造函数指向的原型对象是否存在于左侧实例对象的原型链上)
-
function myInstanceof(left, right) { //基本数据类型直接返回false if(typeof left !== 'object' || left === null) return false; //getProtypeOf是Object对象自带的一个方法,能够拿到参数的原型对象 let proto = Object.getPrototypeOf(left); while(true) { //查找到尽头,还没找到 if(proto == null) return false; //找到相同的原型对象 if(proto == right.prototype) return true; proto = Object.getPrototypeof(proto); } }
-
-
Object.is和===的区别?
-
Object在严格等于的基础上修复了一些特殊情况下的失误,具体来说就是+0和-0,NaN和NaN。 Object.is() 方法判断两个值是否是相同的值。表示两个参数是否相同的布尔值 。
-
-
== 和 ===有什么区别?
-
1. ===叫做严格相等,是指:左右两边不仅值要相等,类型也要相等,例如'1'===1的结果是false,因为一边是string,另一边是number。 2. ==不像===那样严格,对于一般情况,只要值相等,就返回true,但==还涉及一些类型转换,它的转换规则如下: 1. 两边的类型是否相同,相同的话就比较值的大小,例如1==2,返回false 2. 判断的是否是null和undefined,是的话就返回true 3. 判断的类型是否是String和Number,是的话,把String类型转换成Number,再进行比较 4. 判断其中一方是否是Boolean,是的话就把Boolean转换成Number,再进行比较 5. 如果其中一方为Object,且另一方为String、Number或者Symbol,会将Object转换成字符串,再进行比较
-
-
Object.prototype.toString()
-
var obj=new Object({a:3}) // console.dir(obj); // console.dir(['obj'].toString()); // console.dir(obj.toString===Object.prototype.toString); console.dir(obj.toString===Object.prototype.toString); console.log(obj.toString()); // console.log(Object.prototype.toString.call(1));
-