基于现有对象创建对象

时间:2014-09-05 15:13:13

标签: javascript prototype

我是Prototypal继承的新手,我一直处于一项简单的任务中

我有这样的事情:

var test1 = {
       clear : function () { 
         alert('hey');
       } 

 }

 var test2 = {
       varB : 2

 }

我想从test1扩展test2。 任何人都可以给我一个方向吗?我还应该使用Object.create,还是函数+调用方法? 我在这里有点困惑。

我发现的每个例子都基于扩展,然后设置属性,方法等。但我的对象已在此声明。

谢谢!

3 个答案:

答案 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继承方法。