在js中传递对象花费了大量时间

时间:2014-01-08 02:43:22

标签: javascript

我写的功能就像

function isSupport(Element)
{
    //do something
}

元素是一个名为“元素”的对象。“元素”有一些子类,如“实例”,“符号”等等。当我将“元素”的子类传递给此函数时,我发现它会花费我0.002s - 0.003s跳转到函数;它是否通常在javascript中传递一个对象?我怀疑我复制了一个“元素”。

到底是什么原因?

谢谢!

我使用以下代码来显示时间:

function getTimePass()
{
    var date1 = new Date();
    var time1 = date1.getTime() - time ;
    fl.trace("time passed" +time1/1000+"s");
}

fl.trace()是调试输出方法。 我衡量时间:

getTimePass();
isSupport(Elmement);
getTimePass();

同样在isSupport();

function isSupport(Element)
{
    getTimePass();
    //to do
    getTimePass();
}

第一次调用getTimepass()和第二次调用它一般有0.003s间隔。

1 个答案:

答案 0 :(得分:2)

JS中的精确时间间隔

请注意Date个对象不是很精确。

如果您想要presision,您应该使用Performance API(performance.now()):

var t0 = performance.now();
doSomething();
var t1 = performance.now();
console.log("Call to doSomething took " + (t1 - t0) + " milliseconds.")

函数调用很昂贵

http://www.slideshare.net/madrobby/extreme-javascript-performance

的幻灯片10-19

将对象传递给函数

是的,在JavaScript中,将对象传递给函数是很常见的。

不,你的对象没有被复制。事实上,在JavaScript中,对象不直接存储在变量中:变量只包含对象的引用。然后,当您将对象传递给函数时,只传递引用。