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

    xiaoxiao2024-04-06  95

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

    最新回复(0)