gpt4 book ai didi

javascript - 函数返回函数作为属性

转载 作者:行者123 更新时间:2023-11-30 21:08:51 25 4
gpt4 key购买 nike

我知道有时让函数返回其他函数很方便,这样您就不必重复自己,增加模块化等。
但是来自 three.js 的这个片段(其中一个)有什么意义呢?图书馆?

Object.assign( Matrix4.prototype, {

...

applyToBufferAttribute: function () {

var v1 = new Vector3();

return function applyToBufferAttribute( attribute ) {

for ( var i = 0, l = attribute.count; i < l; i ++ ) {

v1.x = attribute.getX( i );
v1.y = attribute.getY( i );
v1.z = attribute.getZ( i );

v1.applyMatrix4( this );

attribute.setXYZ( i, v1.x, v1.y, v1.z );

}

return attribute;

};

}(),

...

} );

“内联”applyToBufferAttribute 不会在其他任何地方重用。

最佳答案

返回的函数变成了方法,是的。将其包装到 IIFE 中的目的是隐藏 v1 变量,使其成为 C 所说的“静态变量”:无论您创建多少个 Matrix4 对象,都不会无论您调用多少次 applyToBufferAttribute,都只会有一个 v1 实例,并且除了在 applyToBufferAttribute 函数内部之外将无法访问它。

that 的目的,我们只能猜测,但可能会避免该 Vector3 对象的分配和释放成本,假设 applyToBufferAttribute 得到以某种频率调用。鉴于 three.js 是一个 WebGL 库,每一点优化都会有所帮助。

关于javascript - 函数返回函数作为属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46339407/

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