Javascript-通过引用访问对象会对性能造成很大影响吗

Javascript - Does accessing objects through a reference incur much of a performance hit?

本文关键字:影响 性能 引用 访问 对象 Javascript-      更新时间:2023-09-26
function Obj()
{
    this.prop = { a: 1, b: 2 };
    this.access();
    access(this.prop);
}
Obj.prototype.access = function()
{
    // accessing 'this.prop' directly
}
function access(property)
{
    // accessing 'this.prop' through local reference 'property'
}

通过对象引用间接访问Obj.prop(如全局access()函数所示(与直接访问(如Objaccess()方法所示(会对性能造成多大影响,原因是什么?

真的没有。

var p = obj.prop
p.a

obj.prop.a

是完全等效的,则可以优化出局部变量。在函数调用(access(this.prop)(的情况下,在函数内联之前,参数可能无法优化,但仍然几乎没有任何区别。

如果p被多次访问而不是obj.prop被多次访问,这可能会有所不同,但即使在现代引擎中,这也得到了很好的优化。

任何性能差异都可以忽略不计。但javascript并不是一种无论如何都会进行这种微优化的语言——如果你编写标准代码,引擎会很好地为你优化它。