1、null 和 undefined的时候,一般采用==
主要是:是否对类型进行校验
2、typeof 可以检验6种原始数据类型
3、Object.prototype.toString.call([])不能校验自定义类型
4、[] instanceof Array 只能校验已经存在的。
console.log(null == undefined);
/***
* typeof 和instanceOf 的区别?
* typeof 可以检验6种原始数据类型
*
*/
console.log(typeof []);
console.log(typeof new RegExp("/A/"));
console.log(typeof function () {});
// 不能校验自定义类型
console.log(Object.prototype.toString.call([]));
console.log(Object.prototype.toString.call(function () {}));
console.log(Object.prototype.toString.call(new RegExp("/A/")));
// 只能校验已经存在的。
console.log([] instanceof Array);
console.log([] instanceof Object);
console.log([].__proto__===Array.prototype);
class A{
}
let a=new A();
function instanceOf(A,B){
B=B.prototype;
A=A.__proto__;
while(true){
if(A===null){
return false;
}
if(A===B){
return true;
}
A=A.__proto__;
}
}
console.log(instanceOf(a,A));
//Symbol.hasInstance
console.log(String[Symbol.hasInstance](str));
class ValidateStr{
static [Symbol.hasInstance](x){
return typeof x==='string';
}
}
console.log('hello' instanceof ValidateStr);
// 找对象的constructor