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

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

本节书摘来自异步社区《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的实例。

相关文章
|
3月前
|
JavaScript
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
Node.js【GET/POST请求、http模块、路由、创建客户端、作为中间层、文件系统模块】(二)-全面详解(学习总结---从入门到深化)
30 0
|
3月前
|
消息中间件 Web App开发 JavaScript
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
81 0
|
13天前
|
存储 移动开发 JavaScript
学习javascript,前端知识精讲,助力你轻松掌握
学习javascript,前端知识精讲,助力你轻松掌握
|
20天前
|
JavaScript 前端开发 测试技术
学习JavaScript
【4月更文挑战第23天】学习JavaScript
13 1
|
28天前
|
JavaScript 前端开发 应用服务中间件
node.js之第一天学习
node.js之第一天学习
|
2月前
|
运维 JavaScript 前端开发
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
发现了一款宝藏学习项目,包含了Web全栈的知识体系,JS、Vue、React知识就靠它了!
|
2月前
|
JavaScript
Vue.js学习详细课程系列--共32节(6 / 6)
Vue.js学习详细课程系列--共32节(6 / 6)
28 0
|
2月前
|
JavaScript
Vue.js学习详细课程系列--共32节(5 / 6)
Vue.js学习详细课程系列--共32节(5 / 6)
30 0
|
2月前
|
JavaScript
Vue.js学习详细课程系列--共32节(4 / 6)
Vue.js学习详细课程系列--共32节(4 / 6)
35 0