经验分享js in运算符。

JavaScript中的in运算符用于检查对象是否具有指定的属性。

在JavaScript中,instanceof运算符用于检测构造函数prototype属性是否出现在某个实例对象的原型链上,当一个对象从某个构造函数创建时,它的原型链上会有一个指向该构造函数的prototype属性,我们可以通过检查实例对象的原型链来确定它是否属于某个特定的构造函数。

基本用法

经验分享js in运算符。

instanceof运算符的基本语法如下:

object instanceof constructor

object是要检查的对象,constructor是构造函数,如果object的原型链上有一个指向constructor.prototype的属性,那么表达式的结果为true,否则为false

我们有一个名为Person的构造函数:

function Person(name, age) {
  this.name = name;
  this.age = age;
}

我们可以创建一个Person类型的对象,并使用instanceof运算符来检查它是否属于Person构造函数:

const person = new Person('张三', 30);
console.log(person instanceof Person); // 输出:true

与typeof的区别

typeof运算符用于获取一个变量或对象的类型,它不能区分对象的具体类型,只能返回一些基本的字符串值,如'number''string''undefined'等,而instanceof运算符可以准确地判断对象是否属于某个特定的构造函数。

我们有一个名为Animal的构造函数:

经验分享js in运算符。

function Animal() {
  // ...
}

我们可以创建一个继承自Animal的子类Dog

function Dog() {
  Animal.call(this);
}
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.bark = function() {
  console.log('汪汪汪');
};

现在,我们可以创建一个Dog类型的对象,并使用typeofinstanceof运算符来检查它:

const dog = new Dog();
console.log(typeof dog); // 输出:'object'(不准确)
console.log(dog instanceof Dog); // 输出:true(准确)
console.log(dog instanceof Animal); // 输出:true(准确)

多层继承的处理

在多层继承的情况下,我们需要确保正确地处理原型链,我们有一个名为Animal的基类,以及一个名为Mammal的子类,它继承自Animal,我们有一个名为Dog的子类,它继承自Mammal,在这种情况下,我们可以使用instanceof运算符来检查一个对象是否属于某个特定的构造函数。

function Animal() {
  // ...
}
function Mammal() {
  Animal.call(this);
}
Mammal.prototype = Object.create(Animal.prototype);
Mammal.prototype.breathe = function() {
  console.log('呼吸');
};
function Dog() {
  Mammal.call(this);
}
Dog.prototype = Object.create(Mammal.prototype);
Dog.prototype.bark = function() {
  console.log('汪汪汪');
};

现在,我们可以创建一个Dog类型的对象,并使用instanceof运算符来检查它:

const dog = new Dog();
console.log(dog instanceof Dog); // 输出:true(准确)
console.log(dog instanceof Mammal); // 输出:true(准确)
console.log(dog instanceof Animal); // 输出:true(准确)

注意事项

1、instanceof运算符只能用于对象,不能用于基本类型(如数字、字符串、布尔值等),对于基本类型,它会返回false

经验分享js in运算符。

“`javascript

const num = 42;

console.log(num instanceof Number); // 输出:false(基本类型)

“`

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/484807.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
硬件大师硬件大师订阅用户
上一篇 2024年7月16日 10:39
下一篇 2024年7月16日 10:49

相关推荐

  • php的默认构造函数

    如果在类中,没有定义构造函数,那么会有一个默认的构造函数,形式如下, 举例说明 如何将一个对象的属性输出并显示 说明: 通过上面的案例,我们讲解了两个重要的点 如果显示成员属性的值 深刻理解了$this 的指向当…

    2018年4月11日
    0435
  • 教你.net 判断 一个对象是什么类型。

    在.NET中,我们可以使用`is`关键字来判断一个对象是否属于某个类型,这个关键字是C#中的一个特性,用于检查一个对象是否是一个特定类型的实例,如果对象是指定的类型或者是派生自该类型,那么`is`表达式就会返回`tr…

    2024年7月4日
    00
  • 重蔚自留地php学习第四十二天——对象(面向对象)

    面向对象编程 面向对象编程不是技术,是一种思想而已。 面向对象编程:OOP(object oriented programming) 面向过程和面向对象 面向过程:将一个事务分成具体的某系列功能,然后将一连串的功能连起来使用,从而解…

    2018年12月24日 我php路线
    0315
  • php构造函数的小结

    构造函数的小结 类定义的进一步完善

    2018年4月11日
    0185
  • 小编教你python中类构造函数的作用及特点。

    在Python中,类的构造函数是一个特殊的方法,名为__init__,当创建类的新实例时,这个方法会自动被调用,它的主要作用是初始化对象的属性。 1. 基本概念 Python的类是一种代码模板,用于创建具有相似属性和方法的对…

    2024年7月27日
    00
  • 小编教你java反射的用处有哪些。

    Java反射是一种动态获取类的信息以及创建对象、调用方法的能力。它可以实现以下功能:获取任意类的名称、package信息、所有属性、方法、注解、类型、类加载器等;获取任意对象的属性,并且能改变对象的属性;调用任…

    2024年7月11日
    00
  • PHP对象--object

    对象--object 说明:世间万物皆为“对象”; 在PHP中的对象是由类创建来的。 如:女娲造人-泥巴 类:模具 Class people{ //属性 $name; $sex; $age; $header; $footer; //方法--行为 Function zou(){ Echo ‘走’; } } /…

    2017年11月21日
    0210
  • 聊聊python中object的用法和作用。

    在Python中,object是所有类的基类,也就是说,每个类默认都继承自object类,这个特性从Python 3.0开始引入,而在Python 2.x版本中,我们通常使用object来创建新型类(new-style class)。 object的基本用法 当我们…

    2024年7月27日
    00

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息