JavaScript的instanceof运算符

来源:互联网 发布:天心软件 编辑:程序博客网 时间:2024/05/31 06:23

《JavaScript高级程序设计》的学习笔记
引用的是阮一峰老师的课程:《JavaScript 标准参考教程(alpha)》http://javascript.ruanyifeng.com/oop/prototype.html

  1. instanceof运算符的作用:判断某个对象是否为指定的构造函数的实例。
//构造函数function Person() {}var instance = new Person();instance instanceof Peson;//true
该运算符等价于判断该实例是否在该实例的原型对象上。其原理就是检测原型链,即
Person.prototype.isPrototypeOf(instance);//trueorinstance.__proto__.isPrototypeOf(instance);//true
基于这种情况,所有的对象都是Object的实例,所以instance instanceof Object;//true

2、对于没有原型对象的对象而言,使用instanceof运算符返回的是false;null是原型链的顶端,它是没有原型对象的。
3、undefined instanceof Object;//false
4、JavaScript中,只要是对象,就有构造函数,除了null这种特殊情况。所以,instanceof运算符的另一个作用是判断值的类型。

var arr1 = new Array();var num1 = new Number();arr1 instanceof Array;//truenum1 instanceof Nubmer();//true

注意,instanceof运算符只能用于对象,不适用原始类型的值。

//字符串不是对象,是基本类型。var str = "Jack";var a = 1;str instanceof String;//falsea instance Number;//false
原创粉丝点击