gpt4 book ai didi

Javascript类-函数优化(函数内的函数)

转载 作者:行者123 更新时间:2023-12-03 11:54:56 26 4
gpt4 key购买 nike

我正在定义一个类:

MyClass = function () {
// Class member variables here
};

MyClass.prototype.MyFunction = function () {
// Do stuff, see below
};

我不确定的是 MyFunction。这是我目前的模式(函数中的函数)。我这样做是因为它看起来很整洁。 MyFunctionSubFunction 仅与 MyFunction 关联,因此从风格 Angular 来看,我假设 MyFunctionSubFunction 应该在 MyFunction 的定义内。

MyClass.prototype.MyFunction = function () {
var i, j, iIter, jIter, a, b, c, val;
var MyFunctionSubFunction = function (a, b, c) {
// Do things with a, b and c
};

// iIter and jIter are set to values depending on what is going on

for(i=0; i<iIter; i++) {
for(j=0; j<jIter; j++) {
// a, b and c are now set depending on i and j

MyFunctionSubFunction(a, b, c);
}
}
};

这是良好的编码实践(函数中的函数)吗?

这是否针对速度和其他方面进行了优化?

MyFunction(上面的函数)每秒被调用大约 250 次(它是一个游戏,这是 AI 代码的一部分)。

或者我应该做这样的事情吗?:

MyClass.prototype.MyFunction = function () {
var i, j, iIter, jIter, a, b, c, val;

// iIter and jIter are set to values depending on what is going on

for(i=0; i<iIter; i++) {
for(j=0; j<jIter; j++) {
// a, b and c are now set depending on i and j

this.MyFunctionSubFunction(a, b, c);
}
}
};

MyClass.prototype.MyFunctionSubFunction = function (a, b, c) {
// Do things with a, b and c
};

最佳答案

MyFunction 内部定义 MyFunctionSubFunction 会产生开销,因为每次调用 MyFunction 时都会调用一个名为 MyFunctionSubFunction 的新函数已创建。

如果您不希望 MyFunctionSubFunction 泄漏,您可以使用 IIFE:

(function(){
var MyFunctionSubFunction = function (a, b, c) {
// Do things with a, b and c
};
MyClass.prototype.MyFunction = function () {
// use MyFunctionSubFunction here somewhere
};
})()

由于 MyFunctionSubFunction 直接对 abc 进行操作,因此不需要成为其一部分MyClass.prototype 的。不过,也有可能。

关于Javascript类-函数优化(函数内的函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25642640/

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