我很好奇这个Javascript的设计,也许这个架构或设计模式的任何原因都可以用来利用它。
对象的constructor
属性始终是对创建该对象的函数的引用,对吗?
但是,请使用此代码:
function base()
{
this.SayHi = function ()
{
window.alert('Hi');
};
}
function subclass()
{
this.SayBye = function ()
{
window.alert('Bye');
};
}
subclass.prototype = new base();
var s = new subclass();
s.SayHi();
s.SayBye();
window.alert(s.constructor);
最后一行将回显base
的构造函数,即使我们知道调用subclass
来创建对象(否则SayBye
将无效)。
一个潜在的解决方法就是:
subclass.prototype.constructor = subclass;
也许更简洁的方式来问我的问题是为什么s.constructor
等于subclass.prototype.constructor
而不是subclass.constructor
,因为s
是子类的实例。谢谢!
答案 0 :(得分:1)
所有对象都从原型继承
constructor
属性。
这就是它的工作原理。您经常会看到人们explicitly setting the constructor
property看到对他们来说更直观的内容。