**Object.prototype.toString**:
下面三种调用都可以判断数据类型。这种判断数据类型的缺点就是判断不了自定义构造函数创建出来的实例对象,比如最后得出是[object Object]而不是Animal
js
Object.prototype.toString.call(要判断类型的数据);
Object.prototype.toString.apply(要判断类型的数据);
Object.prototype.toString.bind(要判断类型的数据)();
function Anamil(name) {
this.name = name
}
let animal = new Anamil('dog');
console.log(Object.prototype.toString.bind(animal)()) // [object Object]
**instanceof**
判断对象的类型,因为内部机制是通过判断对象的原型链中是不是能找到类型的 prototype,只能用来判断两个对象是否属于实例关系, 而不能判断一个对象实例具体属于哪种类型
js
console.log([] instanceof Array) //true
console.log([] instanceof Object) //true
**typeof**
typeof对于原始类型来说,除了null都可以显示正确类型
typeof对于对象来说,除了函数都会显示object
js
var a = "aaa"
console.log(typeof a) // string
**constructor属性**:
判断某个对象是否为某个类的构造函数创建的
js
function Anamil(name) {
this.name = name
}
let animal = new Anamil('dog');
function f(){}
console.log(animal.constructor == Anamil) // true
console.log(animal.constructor == Object) // false
发布者:admin,如若转载,请注明出处:https://ai1024.vip/39066.html