3 ms·
>> This doesn’t happen. The object is unchanged when you call array.slice. You're wrong. Why don't you check instead of reading API docs or saying what you thi
by bumblebird 17y ago
>> This doesn’t happen. The object is unchanged when you call array.slice.
You're wrong. Why don't you check instead of reading API docs or saying what you think should happen? It obviously is changed, and is a new object:
Array.prototype.slice.call({0:"hello",1:"world",foo:"bar",length:2});
Results in ["hello","world"] - the result is a completely new object - inefficient wasted effort. Both in cpu and memory.
Offtopic again, but here's an interesting way to make a new N element array, initialized with undefineds...
Array.prototype.slice.call({length:100}) = [undefined, undefined, undefined........ undefined]
Array.prototype.slice.call({length:10000000}) takes almost 1 second to run on my MBP while it's creating that new array.
>> What’s the alternative?
As I say, just write closures...
onclick = function(c){return function(){c.doSomething()}}(this);
It's not much more typing, and is more general. I agree arguments would be nicer if it was a true array though.
- bumblebird 17y agoInstead of downmodding, why not explain why you disagree with the facts I present above?