instance of

发布时间 2023-03-22 21:09:29作者: 梓色心晴
var myString = new String();
myString instanceof Object   //true
var myString = new String();
myString instanceof String   //true
var a = 'abbc'
a instanceof String  //false,   a并不是对象

 

instanceof 用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。

 

语法:object instanceof constructor
object:某个实例对象
constructor:某个构造函数
用来检测 constructor.prototype 是否存在于参数 object 的原型链上。

 

var o = new C()

console.log(o instanceof C)

// true     --> C.prototype 在 o 的原型链上

// o.__proto__ === C.prototype

 

console.log(o instanceof Object, o.__proto__.__proto__ === Object.prototype)

// true true --> Object.prototype 在 o 的原型链上

 

判读对象、数组,函数

1 . instanceof

console.log(arr instanceof Array)
console.log(obj instanceof Object)
console.log(fun instanceof Function)


//instanceof 不是通用的,它认为框架数组不是实际的数组,eg:
var b = new iframeArray(1,2,3,4);
b instanceof Array
//返回false 

2. Array.isArray
如果值是 Array, 则为true; 否则为false。(可区分对像和数组)

  3:通过原型上的toString方法判断

复制代码
console.log(Object.prototype.toString.call(arr) === '[object Array]')
console.log(Object.prototype.toString.call(obj) === '[object Object]')
console.log(Object.prototype.toString.call(fun) === '[object Function]')
复制代码


4:通过构造函数名判断

console.log(arr.constructor.name === 'Array')
console.log(obj.constructor.name === 'Object')
console.log(fun.constructor.name === 'Function')