JavaScript 'inheritance' : constructor property is not correct

标签 javascript constructor

请帮忙解释以下结果(在 Firefox 3.6 上测试)。如果“this”显然是B类型,为什么this.constructor指向原型(prototype)内部的A?我幻想字典是从最顶层原型(prototype)链向下遍历的,但这里似乎并非如此:

A=function() {}  
A.prototype.copy=function() {
  return new this.constructor();
}
B=function() {}
B.prototype=new A();

var b=new B();
var bcopy=b.copy();
var cond1=bcopy.constructor==B // false
var cond2=bcopy.constructor==A // true

最佳答案

var b = new B;
b.constructor == A; // true

因此,您的 copy() 函数正在创建一个新的 A。但是,如果您添加此行:

B.prototype.constructor = B;

...您将得到您希望的结果。

关于JavaScript 'inheritance' : constructor property is not correct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4676617/

相关文章:

javascript - 我可以通过 Firebase 对用户进行身份验证并使用 Supabase(私有(private))存储桶而不依赖 Supabase 身份验证用户限制吗

javascript - 必须单击按钮两次才能执行功能

Java - 从构造函数填充数组

android - 用 onCreate() 替换 android 构造函数

javascript - x-editable 向 AJax POST 数据总量提交额外的 "array"

java - 如何组织一个java web项目?

java - ArrayList 和 Array 作为构造函数的参数

c++ - 在 Vector c++ 中使用指针成员初始化对象

c++ - 在基本构造函数中初始化唯一指针的标准容器

javascript - Axios PUT 和 GET 请求的问题,有时工作正常,有时不工作