《JavaScript面向对象精要》——1.6 鉴别引用类型

本节书摘来自异步社区《JavaScript面向对象精要》一书中的第1章,第1.6节,作者:【美】Nicholas C. Zakas 译者: 胡世杰 更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.6 鉴别引用类型

函数是最容易鉴别的引用类型,因为对函数使用typeof操作符时,返回值是“function”。

function reflect(value) {
    return value;
}

console.log(typeof reflect);  // "function"

对其他引用类型的鉴别则较为棘手,因为对于所有非函数的引用类型,typeof返回“object”。在处理很多不同类型的时候这帮不上什么忙。为了更方便地鉴别引用类型,可以使用JavaScript的instanceof操作符。

instanceof操作符以一个对象和一个构造函数为参数。如果对象是构造函数所指定的类型的一个实例,instanceof返回true;否则返回false,如下例。

var items = [];
var object = {};

function reflect(value) {
    return value;
}

console.log(items instanceof Array);    // true
console.log(object instanceof Object);   // true
console.log(reflect instanceof Function); // true

本例用instanceof和构造函数测试了几个值,它们真正的类型都被正确鉴别出来(即使该构造函数并没有被用于创建该变量)。

instanceof操作符可鉴别继承类型。这意味着所有对象都是Object的实例,因为所有引用类型都继承自Object。

作为示范,下列代码用instanceof检查了之前那3种引用。

var items = [];
var object = {};

function reflect(value) {
    return value;
}

console.log(items instanceof Array);    // true
console.log(items instanceof Object);    // true
console.log(object instanceof Object);   // true
console.log(object instanceof Array);    // false
console.log(reflect instanceof Function); // true
console.log(reflect instanceof Object);   // true

每种引用类型的对象都被正确鉴别为Object的实例。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值