我是Prototypal继承的新手,我一直处于一项简单的任务中
我有这样的事情:
var test1 = {
clear : function () {
alert('hey');
}
}
var test2 = {
varB : 2
}
我想从test1扩展test2。 任何人都可以给我一个方向吗?我还应该使用Object.create,还是函数+调用方法? 我在这里有点困惑。
我发现的每个例子都基于扩展,然后设置属性,方法等。但我的对象已在此声明。
谢谢!
答案 0 :(得分:1)
在现代浏览器中,您可以使用Object.setPrototypeOf
:
Object.setPrototypeOf(test2, test1);
目前没有其他(官方)方式可以更改现有对象的原型。
如果您只是创建一个简单的对象,可以使用Object.create
:
var test2 = Object.create(test1);
test2.varB = 2; // or Object.assign(test2, {varB: 2});
如果您实际上不需要继承,则可以选择将对象与Object.assign
合并:
Object.assign(test2, test1);
这只是将属性从test1
复制到test2
。与继承不同,对test1
的更改不会影响test2
。
有关详细信息,我建议您查看
答案 1 :(得分:0)
一个非常基本的方法是
test2.__proto__ = Object.create(test1)
因此,clear
对象中将提供test2
函数。
答案 2 :(得分:0)
您可以使用prototype
进行继承。但它只是javascript中的一些继承方式。
function test1() {}
test1.prototype.clear = function () {
alert('hey');
}
function test2() {}
test2.prototype = new test1();
test2.prototype.varB = 2;
var test2Instance = new test2();
用google自己搜索更多javasrcipt继承方法。