gpt4 book ai didi

Javascript 对象/函数在另一个对象/函数中的可访问性

转载 作者:行者123 更新时间:2023-12-03 06:01:58 26 4
gpt4 key购买 nike

我一直在寻找最佳解决方案,但我真的不知道应该寻找什么关键字。我需要对我的问题进行一些解释:) 那是我的代码:

function fluidEdge(params) {
var fluid = {};
fluid.point = function(config){
fluid.x = config.x;
fluid.y = config.y;
};
fluid.renderShape = function(params){
params = params || {};
var x = params.x || 0;
var y = params.y || 0;
point = new fluid.point({
x: x,
y: y
});
console.log(point.x);
};

return fluid;
}

var test = new fluidEdge({});

test.renderShape({x: 50, y: 100});

Fiddle

我的示例要复杂得多,因此我无法真正重建代码,我已经尽可能地简化了它。我想访问 Fluid.renderShape 内的 Fluid.point 函数。我不知道该怎么做,我尝试了几种方法。

之前,除了 this. 以外,我没有在任何地方使用 var Fluid = {};fluid.,而且一切都运行良好。

如果我有什么错误,大家也可以指出来。提前致谢。

最佳答案

您似乎对构造函数和函数的工作方式略有混淆。您的代码可能看起来像这样:

function FluidEdge(params) {}

FluidEdge.Point = function(config) {
this.x = config.x;
this.y = config.y;
}

FluidEdge.prototype.renderShape = function(params) {
params = params || {};
var x = params.x || 0;
var y = params.y || 0;

var point = new FluidEdge.Point({x: x, y: y});

console.log(point.x);
}

var test = new FluidEdge({});
test.renderShape({x: 50, y: 100});

请注意使用 prototype 来表示构造函数上的方法,并使用 this 来引用构造的对象。

另请注意,将构造函数放在实例变量上通常是一个坏主意,除非您知道自己在做什么并且有充分的理由这样做。

值得注意的是,如果您利用 ES2015 功能,此代码会变得更加好看

class FluideEdge {
renderShape({x = 0, y = 0}) {
var point = new FluidEdge.Point({x, y});
console.log(point.x);
}
}
FluidEdge.Point = class {
constructor({x, y}) {
this.x = x;
this.y = y;
}
}

关于Javascript 对象/函数在另一个对象/函数中的可访问性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39719130/

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