1. 程式人生 > >用new方法生成一個img物件和document.createElement方法建立一個img物件的區別

用new方法生成一個img物件和document.createElement方法建立一個img物件的區別

我用兩種方法來生成img物件,第一種方法是用new方法,第二種方法是用document.createElement方法。

var img1 = new Image();
var img2 = document.createElement('img');
其實,乍一看,感覺有些不同,但是具體什麼不同,一下子也說不上來。

在console視窗,比較看看,都是生成img物件,節點名稱都一樣。

接下來,我來比較一下它們的node型別

結果nodeType也是一樣的,都屬於元素節點。

節點型別常用的有3種,元素節點Node.ELEMENT_NODE(1);屬性節點Node.ATTRIBUTE_NODE(2)以及文字節點Node.TEXT_NODE(3)。

從型別和名稱上看,這兩種方法建立的img節點是沒有什麼不同的。

最後,比較一下效率吧。分別運算10萬次。

var time1= new Date() - 0;
        for(var i = 0; i < 100000; i++) {
            var img1 = new Image();
        }
        var time2 = new Date() - 0;
        console.log('the first time is ' + (time2 - time1));


        var time3= new Date() - 0;
        for(var i = 0; i < 100000; i++) {
            var img1 = document.createElement('img'); 
        }
        var time4 = new Date() - 0;
        console.log('the second time is ' + (time4 - time3));
得出的結論是document.createElement()方法的效率更好!

那麼計算100萬次呢?卻有點出乎意料,new Image()方法更勝一籌!

1000次的時候,是document.CreateElement()方法更有效率!

1000萬次的時候,new Image()方法更快,我洗臉刷牙泡腳完畢的時候,document.createElement()方法都還沒有計算完成呢,再後來直接崩潰了。

所以,在生成物件個數較少的時候,用document.createElement()似乎更好!