在处理外部对象时正在查看最佳做法,并在本文中讨论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,但更普遍的解释是我正在寻找的。
答案 0 :(得分:1)
你不需要为包装器提供新东西。对于对象,你可以使用{}。
var obj = new customObject();
var wrapper = { 'childobj' : obj, 'anotherProperty': 1 };
console.log(wrapper.childobj);