对象实例为它的Prototype属性输出`undefined`。为什么?

时间:2015-12-18 11:40:24

标签: javascript constructor function-prototypes

根据我的理解(尽管是Javascript的新手),Object实例继承了原型的属性和方法。在下面,我明确地将Title对象实例的原型设置为Foo(),因此Title应该继承Foo的属性(bar),但alert(Title.bar);输出undefined,而它应该(根据我的理解)输出Vanilla。显然,我的理解中有一些不妥之处,有人可以帮助我理解为什么alert(Title.bar);输出undefinedalert(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

1 个答案:

答案 0 :(得分:0)

您可以将其称为重定向,但可以使用以下方式完成:

  

Title.prototype = new Foo(" Vanilla");

然后创建另一个实例,即

  

var rek = Title.prototype

现在查看 rek instanceof Foo rek instanceof Foo 的实例 它会让你更好地理解

alert(rek.bar)//给你的香草

:)