【发布时间】:2014-07-02 23:20:21
【问题描述】:
我在用 JavaScript 构建一些代码时遇到了一点麻烦,下面是我想如何使用代码的示例:
var instance = new myObject("foo", "bar");
var sub = new myObject.subObject("x", "y", "z");
instance.doSomething();
subObject 将无法访问 myObject 的属性(在这种情况下,例如“foo”和“bar”),而 myObject 只是简单地封装了 subObject,如果你明白我的意思的话。在本例中,“x”、“y”和“z”是 myObject.subObject 实例的局部变量。
myObject 中的函数,例如 doSomething() 本身可能会创建一些 myObject.subObject 的实例,并且可以访问 myObject 的属性,例如“foo”和“bar”。
那么myObject采取什么结构形式呢?
编辑:
我的想法是这样的:
function myObject(foo, bar) {
this.foo = foo;
this.bar = bar;
this.doSomething = function() {
var a = new this.subObject("x", "y", "z");
var b = new this.subObject("1", "2", "3");
console.log(a.x, a.y, a.z, b.x, b.y, b.z);
};
this.subObject = function(x, y, z) {
this.x = x;
this.y = y;
this.z = z;
};
}
【问题讨论】:
-
我不确定我是否完全理解,我也不确定你是否完全理解。在第二行中,您将创建一个全新的
myObject实例,因此myObject的实例无论如何都无法访问第一个实例中创建的任何内容。我从上面得到的是:您想要一个无法访问其父实例的subObject方法,但也需要myObject的其他实例部分可以。 -
myObject 是如何定义的?
-
@KevinB 他希望我们这样做。见最后一行
-
myObject.subObject只是一个普通的构造函数。没有什么特别的事情要做来“隔离”属性。instance永远不会知道sub,反之亦然。 -
您的解决方案与您提供的示例不匹配。在您的第一个示例中,
subObject是 constructor 的属性,而不是 instance 的属性。
标签: javascript