gpt4 book ai didi

javascript - JavaScript 中的嵌套对象

转载 作者:行者123 更新时间:2023-12-03 12:18:55 25 4
gpt4 key购买 nike

我在用 JavaScript 构建一些代码时遇到了一些麻烦,下面是我希望如何使用这些代码的示例:

var instance = new myObject("foo", "bar");
var sub = new myObject.subObject("x", "y", "z");
instance.doSomething();

子对象无法访问 myObject 的属性(例如本例中的“foo”和“bar”),而是 myObject 简单地封装了子对象,如果您明白我的意思的话。在此示例中,“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.subObject 只是一个普通的构造函数。您无需执行任何特殊操作即可“隔离”属性。 instance 永远不会知道 sub ,反之亦然。我将构造函数名称大写,以便更清楚什么是实例以及什么是构造函数:

function MyObject(a, b) {
// do stuff with a and b
}
MyObject.prototype.doSomething = function() {
var innerSub = new MyObject.SubObject();
// or
// var innerSub = new this.constructor.SubObject();
};

MyObject.SubObject = function(x, y, z)
// do stuff with x,y and z
};


var instance = new MyObject("foo", "bar");
var sub = new MyObject.SubObject("x", "y", "z");
instance.doSomething();

MyObject.SubObject`确实没有什么特别的。由于函数本身就是对象,因此您可以根据需要向它们添加属性。

关于javascript - JavaScript 中的嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24534372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com