我试图将test1中的成员继承到test2但它不起作用。
var splitList = str.Split(delimiterChar, StringSplitOptions.RemoveEmptyEntries).ToList();
splitList.RemoveAt(0);
如何让test2继承test1的成员?
答案 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
我希望我能帮到你。祝一切顺利。干杯