1
我很好奇Javascript的这种设计,也许这种架构或设计模式的任何原因都可以用来利用这一点。在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
是一个instanceof子类。谢谢!
为Javascript花园链接+1,这是一个有趣的阅读!解决了我多年来的一些误解。 –
该陈述令人困惑,因为它很容易被解释为意味着对象的公共原型,而继承来自* internal * proptotypes。需要对MDN进行另一次编辑。 – RobG
@RobG:谢谢,我会反映新的文字(当你改变它的时候)。 – alex