Javascript无法从对象继承成员

时间:2017-02-03 01:20:31

标签: javascript object inheritance

我试图将test1中的成员继承到test2但它不起作用。

var splitList = str.Split(delimiterChar, StringSplitOptions.RemoveEmptyEntries).ToList();
splitList.RemoveAt(0);

如何让test2继承test1的成员?

1 个答案:

答案 0 :(得分:-1)

首先,您需要考虑:

function inherit(a, b)
{
// none of these work
//a.prototype = b;
//a.prototype = b();
//a.prototype = new b();
//a.prototype = Object.create(b.prototype);
//a.prototype = Object.create(b);
//a.prototype = b.prototype;
}

Class Class 的关系。继承是 Class Class ,并且你错误地使用了这个范围内的对象试图说:" Hey对象尝试继承该类行为&#34 ; 你能在这里看到错误吗?

此外,您必须首先在实例化新对象之前更改 之间的关系。因此,代码应为:

function inherit(a, b)
    {


  // just this one works:
  a.prototype = new b();

 // none of these work  
 //a.prototype = b;
 // a.prototype = b();
 //  a.prototype = Object.create(b.prototype);
   // a.prototype = Object.create(b);
   // a.prototype = b.prototype;
    }

    function test1()
    {
      this.val1 = 123;
      this.print = function () {
      console.log ("life sucks!");
      }

    }

    function test2()
    {
       this.val2 = 456;
       }
    //First you have to set the relation
    inherit(test2, test1);

   //After that you can create your object 
    var testInstance = new test2();

    console.log(testInstance.val2);
    console.log(testInstance.val1);
    console.log(testInstance.print);

最后,你本来应该问!为什么我不能在这些情况下使用object.create函数进行继承?那是因为你对字段(变量)有严格的指定值,你必须使用" new"关键字。

  

到目前为止显示的构造函数(Object.create,   b.prototype etc)不要让你在创建时指定属性值   实例。与Java一样,您可以为构造函数提供参数   初始化实例的属性值。下图显示   一种方法。

请考虑阅读这篇文章:link

我希望我能帮到你。祝一切顺利。干杯