【发布时间】:2015-04-09 14:05:57
【问题描述】:
让我们考虑以下代码 sn-p:
function A() {}
var obj = new A();
function B() {};
obj.constructor = B;
console.info("1: ", obj.constructor); //Function B
console.info("2: ", obj instanceof A); //true
console.info("3: ", obj instanceof B); //false
我猜测对象是否是某个函数类的实例,JS 引擎必须检查对象是否具有相同的构造函数属性。但这似乎并没有发生,因为即使覆盖对象的构造函数属性也不会改变它的 instanceof 输出。
【问题讨论】:
-
您正在寻找规范。
-
为了好玩,在您的 Chrome 控制台或类似设备中运行您刚才谈到的代码。你会注意到
obj有一个__proto__方法,它仍然被称为A。我真的不知道你的问题的答案,但我认为这与此有关。它不仅仅是 JavaScript。 -
几个重复:stackoverflow.com/…
-
@FelixKling 是的,问题是重复的,我的错,我尝试删除问题但不能... :(
标签: javascript