`
mutongwu
  • 浏览: 447489 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

instanceof 与 constructor

阅读更多
instanceof 与 constructor通常都用判断实例与类之间的关系。但是,在应用中,不同的侧重点将会有不同的具体偏好。我们看看它们的一些特点,从而更恰当的应用。

来看下面的这段代码:

function Person(){

}
var a = new Person();
alert(a instanceof Person);//true

Person.prototype = {
    constructor:Person
}

alert(a instanceof Person);//false


在创建了一个Person对象以后,我们重新指向了函数的prototype,即便设置了constroctor应用,结果发现instanceof 将不起作用。也就是说,创建一个实例,浏览器确实以某种方式可以判断实例与函数(或者是函数的prototype)之间的关系。对prototype重新指向以后,实际是2个不同的内存地址了。实例与新的prototype对象之间并没有任何关系。所以instanceof返回false.

也就是说:如果要判断实例对象与类之间的直接关系,我们可以利用设置constructor来判断。而instanceof则可以用在继承上面,来判断对象与类之间的关系。
分享到:
评论

相关推荐

    JS:typeof instanceof constructor prototype区别

    本文将深入探讨四种常用的方法来识别和判断JavaScript中的数据类型:`typeof`、`instanceof`、`constructor`以及`prototype`。 ### 1. `typeof` `typeof`操作符是最常见的类型检测方式之一,它返回一个表示未经计算...

    typeof、instanceof、constructor 的联系、区别、应用场景(js 类型判断)

    `typeof`、`instanceof`和`constructor`是JavaScript中三种常见的用于判断对象类型的工具。下面将详细阐述它们的联系、区别以及应用场景。 `typeof`操作符: `typeof`主要用于检测一个值的数据类型,返回的是一个...

    instanceof 和 prototype 关系

    `instanceof`通过查找对象的原型链来确定对象与构造函数之间的实例关系,而`prototype`则用来设置和访问对象的原型属性,从而实现对象间的共享属性和方法。了解和掌握这两个概念,对于理解和使用JavaScript的面向...

    instanceof 判断引用类型,typeof判断基本类型。

    如果`object`是`Constructor`的实例,或者`object`的原型链中存在`Constructor.prototype`,那么`instanceof`会返回`true`,否则返回`false`。例如: ```javascript function Person() {} let person = new Person...

    Array, Array Constructor, for in loop, typeof, instanceOf

    在JavaScript中,数组是一种特殊的对象,但它们与传统的对象有着明显的区别。数组是用于存储一系列有序数据的数据结构,而对象则是用于存储键值对的数据结构。尽管数组在内部表示上与对象共享一些特性,但在遍历和...

    前端面试题之baseJS-instanceof.zip

    它的基本语法是`object instanceof Constructor`,其中`object`是要检查的对象,`Constructor`是构造函数。如果`object`是`Constructor`的一个实例,或者`object`的原型链上存在`Constructor.prototype`,那么`...

    JS中typeof与instanceof之间的区别总结.docx

    它的基本语法是`variable instanceof Constructor`。如果变量是Constructor创建的对象实例,`instanceof`将返回`true`,否则返回`false`。 例如: ```javascript var arr = new Array(); arr instanceof Array; // ...

    JavaScript constructor和instanceof,JSOO中的一对欢喜冤家

    至少每个尝试JavaScriptOO的程序员都花费很多精力用在面向对象机制的模拟上而非业务本身.... 更糟糕的是模拟OO对于JavaScript高级程序员都有着邪恶的吸引. 因为干这个事儿超然于业务之上,有种创造新编程语言一般的快感,...

    08-手写instanceof.md

    手写代码测试不仅考验应聘者的即时编码技能,还能展示他们对语言特性的理解与应用。特别是对于JavaScript中的instanceof操作符的深入理解,是前端开发者应该掌握的一个重要知识点。instanceof操作符常用于判断一个...

    Java反射之Constructor、Method、Field使用及说明

    1. **传统RTTI**:假设在编译阶段已经知道了所有类型信息,如通过`instanceof`关键字判断对象类型。 2. **反射机制**:允许程序在运行时发现并使用类信息,更加灵活。 ##### 为何需要RTTI - **多态性**:在面向...

    js代码-instanceof的实现

    `instanceof`的基本语法是:`object instanceof constructor`,这里的`object`是你要检查的对象,`constructor`是构造函数。如果`object`是`constructor`的实例或者`constructor`的原型链上的任何一个构造函数的实例...

    前端大厂最新面试题-typeof_instanceof.docx

    使用方法如下:object instanceof constructor,object 为实例对象,constructor 为构造函数。 例如: let Car = function() {} let benz = new Car() benz instanceof Car // true let car = new String('xxx') ...

    【JavaScript源代码】JavaScript 手动实现instanceof的方法.docx

    这个函数的工作方式是,首先获取传入对象`obj`的隐式原型`__proto__`,然后比较它与构造函数`constructor`的`prototype`。如果两者相等,说明`constructor`的`prototype`在原型链上,返回`true`。如果不等,则继续...

    判断数据类型的方法.html

    JS中判断数据类型的4种方法及其实例:typeof、instanceof、constructor、Object.prototype.toString.call();还有判断数据类型的函数

    JavaScript类型检测之typeof 和 instanceof 的缺陷与优化

    本文将通过分析这两个操作符的使用场景与局限性,探讨如何进行优化,以提高类型检测的准确性与可靠性。 1. typeof操作符 typeof是一个一元操作符,它会返回一个表示变量类型的字符串。基本的数据类型,如number、...

    实例讲解JavaScript中instanceof运算符的用法

    然而,`instanceof`在某些情况下可能产生意外的结果,这往往与JavaScript的原型继承机制有关。例如: ```javascript console.log(Object instanceof Object); // 输出 "true" console.log(Function instanceof ...

    js代码-手写instanceof

    `instanceof` 的基本用法是 `object instanceof Constructor`,它会返回一个布尔值,表示`object`是否是由`Constructor`构造函数创建的,或者是`Constructor`的原型链上的某个构造函数创建的。这里有几个关键概念...

    JavaScript中instanceof运算符的使用示例

    instanceof运算符的一般使用语法是:object instanceof Constructor,它会返回一个布尔值,表示object的原型链上是否存在Constructor的prototype属性。 以下是一些关于instanceof运算符使用的基本知识点: 1. 检测...

    js代码-实现一个 instanceof

    function instanceOf(obj, constructor) { let proto = obj.__proto__; while (proto !== null) { if (proto === constructor.prototype) { return true; } proto = proto.__proto__; } return false; }...

Global site tag (gtag.js) - Google Analytics