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')
标签:instanceof,console,log,Object,instance,prototype,true From: https://www.cnblogs.com/weiqian/p/17183115.html