liace

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

js instanOf的实现逻辑 super()

在 JavaScript 中,instanceof 运算符用于检查一个对象是否是另一个对象的实例。它的使用形式是 obj instanceof constructor,其中 obj 是要检查的对象,constructor 是要检查的构造函数。

instanceof 运算符的实现逻辑如下:

  1. 首先,它会检查 constructor 是否是一个函数。如果 constructor 不是一个函数,instanceof 运算符会抛出一个 TypeError

  2. 如果 constructor 是一个函数,它会检查 obj 是否具有一个名为 [[Prototype]] 的内部属性。这个属性代表了 obj 的原型对象。

  3. 接下来,instanceof 运算符会检查 constructor 是否具有一个名为 prototype 的属性。这个属性代表了构造函数的原型对象。

  4. 如果 obj 的原型对象和构造函数的原型对象相等,或者如果 obj 的原型链中有一个或多个对象的原型对象与构造函数的原型对象相等,那么 obj 就被认为是 constructor 的一个实例,instanceof 运算符返回 true

  5. 如果 obj 的原型链上没有与构造函数的原型对象相等的原型对象,instanceof 运算符返回 false

需要注意的是,instanceof 运算符只能检查对象是否是某个构造函数的实例,而不能用于检查对象是哪种具体类型的实例。另外,instanceof 运算符也无法跨越不同的 JavaScript 的全局执行上下文,因为每个全局执行上下文都有自己的原型链。

 

在 JavaScript 中,super() 是用于调用父类构造函数的特殊关键字。它只能在派生类的构造函数中使用,用来调用父类的构造函数以完成对父类的属性初始化。

使用 super() 的一般步骤如下:

  1. 在派生类的构造函数内部,使用 super() 进行调用,如 super()

  2. super() 必须在访问 this 或者在派生类的构造函数中访问它之前调用。否则,会引发 ReferenceError

  3. 调用 super() 后,它会执行父类的构造函数,并将当前实例作为 this 传递给父类的构造函数。

  4. 父类的构造函数执行完成后,派生类的构造函数将继续执行,可以在派生类的构造函数中对自身的属性进行初始化。

使用 super() 的主要目的是在派生类的构造函数中获得父类的属性初始化。通过调用父类的构造函数,派生类可以确保在自己的构造函数中对继承的属性进行正确的初始化。

需要注意的是,如果派生类的构造函数没有显式地调用 super(),则 JavaScript 引擎会默认在派生类构造函数的开头隐式调用 super(),相当于 super.call(this)。这样做是为了确保派生类的实例正确地继承父类的属性。

posted on   凉策  阅读(21)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示