原型扩展中父类的引用实例

时间:2014-12-09 15:36:22

标签: javascript oop

我有一个课程,我想用几种新方法扩展。
为了不污染对象的命名空间(可能覆盖现有方法),我希望将这些方法分组到一个属性名称下。
如何在扩展容器内获取原始对象实例的引用?

澄清:

// here's what I have
obj = function () {
    // something happens here
    this.property = "XYZ"
}
var x = new obj();
console.log(x.property); // logs "XYZ"

// here's how I want to extend it
obj.prototype.extension = {property: "ABC"};
obj.prototype.extension.whatstheproperty = function () {
    // how to get a reference to the obj's instance here?
    console.log(this.property); // logs "ABC" not "XYZ" for obvious reasons
    // QUESTION -> how get get "XYZ"?
}
var z = new obj();
z.extension.whatstheproperty();

我的猜测是必须有一种方法将父实例的引用存储为extension的属性。
一种显而易见的方法是在父实例生成时设置它:

x = new obj();
x.extension.parent = x;

然后我可以在this.parent的所有方法中访问extension

但我觉得必须有更好的方法,特别是因为我不知道新的obj何时被实例化。

我只希望每个新的obj都有一个属性extension,它有一个引用父实例的属性。

我该如何处理?

0 个答案:

没有答案