Javascript 向阵列原型添加函数
为什么将这个简单的JavaScript函数添加到数组原型中会导致我的动画速度显著降低 注意:绘制单个帧确实需要使用大量数组。将您自己的函数添加到阵列原型中是否意义重大Javascript 向阵列原型添加函数,javascript,arrays,Javascript,Arrays,为什么将这个简单的JavaScript函数添加到数组原型中会导致我的动画速度显著降低 注意:绘制单个帧确实需要使用大量数组。将您自己的函数添加到阵列原型中是否意义重大 Array.prototype.last = function() { return this[this.length - 1]; }; 这个答案假设代码已经被分析,并且在这里确定了瓶颈。如果不是这样,请先这样做:|| 下面的提示主要针对V8特定的优化,但通常也会提高其他发动机的性能 虽然功能相当,但我建议对last(
Array.prototype.last = function()
{
return this[this.length - 1];
};
这个答案假设代码已经被分析,并且在这里确定了瓶颈。如果不是这样,请先这样做:|| 下面的提示主要针对V8特定的优化,但通常也会提高其他发动机的性能
虽然功能相当,但我建议对
last()
进行两项更改:
- 它应该是接受数组作为参数的静态方法,而不是
的成员方法array
- 应该这样
function last (array) {
var lastIndex = array.length - 1;
if (lastIndex === -1) return undefined;
return array[lastIndex];
}
在这一点上,你可能会想
很酷,现在我可以对类似数组的对象(如参数
)重复使用它了
如果您这样做,那么函数可以保持优化状态,否则优化器必须退出并使用效率较低的抽象,以便允许
数组
以外的类型作为输入。我认为这不太可能单独削弱您的性能。您应该描述动画的功能以及运行方式和时间。最后,一般不赞成扩展原生类型的原型。您的函数不会导致速度减慢。至于我,我通常不愿意“扩展”语言通用的东西,比如数组。给我一个很好的函数,如上图所示。