根据我的理解(尽管是Javascript的新手),Object实例继承了原型的属性和方法。在下面,我明确地将Title对象实例的原型设置为Foo()
,因此Title应该继承Foo的属性(bar),但alert(Title.bar);
输出undefined
,而它应该(根据我的理解)输出Vanilla
。显然,我的理解中有一些不妥之处,有人可以帮助我理解为什么alert(Title.bar);
输出undefined
而alert(Title.prototype.bar);
输出Vanilla
。
function Foo(name) {
return this.bar = name;
};
Foo.prototype.append = function (what) { return this.bar += "" + what; }
Foo.prototype.newbar = "Chocolate";
function Title() {
return function page_title() { return this.title = this.bar; }
}
//Setting Prototype of Title instance to Foo()
Title.prototype = new Foo('Vanilla');
//Setting Prototype's Constructor to Title() for proper inheritance
Title.prototype.constructor = Title;
//Calling Inherited variable(Prototype's) on the instance
alert(Title.bar); // undefined
答案 0 :(得分:0)
您可以将其称为重定向,但可以使用以下方式完成:
Title.prototype = new Foo(" Vanilla");
然后创建另一个实例,即
var rek = Title.prototype
现在查看 rek instanceof Foo 和 rek instanceof Foo 的实例 它会让你更好地理解
alert(rek.bar)//给你的香草
:)