在JS中包装对象(最佳实践)

时间:2016-02-04 01:27:27

标签: javascript

在处理外部对象时正在查看最佳做法,并在本文中讨论why not to modify objects you do not own.

推理相当合理,我的问题是如何实现这一点。作为参考,我的代码行为是这样的(自定义对象由第三方拥有,谷歌地图):

var cObj = new customObject();
//I need to custom properties in addition to what Google provides
//So I insert new properties:
cObj.myProp1 = 1;

文章提供了很好的理由,为什么这是一个不好的做法因此我这样做:

function objWrapper(e){
   var cObj = e.cObj ? e.cObj : null;
   var myProp1 = e.myProp1 ? e.myProp1 : null;
}

//Here I create a copy of my wrapper and insert the Custom Object into it:
var obj - new objWrapper({});
var cObj = new customObject();

//Then I insert the cObj reference to the wrapper
obj.cObj = cObj;

这种方法在处理变量时工作正常,但如果说我需要访问obj的另一个子节点,我需要添加一个循环引用,如下所示:

cObj.obj = obj;

哪个不理想,用OO语言我可以看到如何正确地做到这一点,不太确定如何进行JS。我不知道原型在这里是如何真正有用的。

PS:我正在使用的实际代码是here,但更普遍的解释是我正在寻找的。

1 个答案:

答案 0 :(得分:1)

你不需要为包装器提供新东西。对于对象,你可以使用{}。

var obj = new customObject();

var wrapper = { 'childobj' : obj, 'anotherProperty': 1 };
console.log(wrapper.childobj);
相关问题