ugrás a tartalomhoz

7 JavaScript Basics Many Developers Aren't Using (Properly)

janez · 2013. Aug. 19. (H), 17.30
Hét JavaScript alapismeret, amit sok fejlesztő nem használ
 
1

Array.prototype.slice.call(..

MadBence · 2013. Aug. 21. (Sze), 16.07
Array.prototype.slice.call(...) helyett [].slice.call(...) (rövidebb, nem egy üres tömb létrehozásába pedig nem hal bele senki)

Array.prototype.push.apply(arr, arr2) nekem elég nagy gányolásnak tűnik, miben jobb ez, mint az arr = arr.concat(arr2) (gyorsabb? ha igen, az szomorú :D). Illetve ez is túl van bonyolítva, helyette lehetne arr.push.apply(arr, arr2).

Az Array.sort-ról elfelejti megemlíteni, hogy helyben rendez
2

Array.prototype.push.apply(ar

Poetro · 2013. Aug. 21. (Sze), 16.51
Array.prototype.push.apply(arr, arr2) nekem elég nagy gányolásnak tűnik, miben jobb ez, mint az arr = arr.concat(arr2) (gyorsabb? ha igen, az szomorú :D)

Nem gyorsabb, csak teljesen mást csinál.
3

?

MadBence · 2013. Aug. 21. (Sze), 18.32
var arr = [1, 2, 3];
var arr2 = [4, 5, 6];
arr.push.apply(arr, arr2); //arr = [1, 2, 3, 4, 5, 6]
vs
var arr = [1, 2, 3];
var arr2 = [4, 5, 6];
arr = arr.concat(arr2); //arr = [1, 2, 3, 4, 5, 6]
szerintem meg nem :)
4

Appender

Poetro · 2013. Aug. 21. (Sze), 19.11
/**
 * @param {Array} arr
 * @constructor
 */
function Appender(arr) {
    /**
     * @type {Array}
     * @private
     */
    this._arr = arr;
}

/**
 * @return {Array}
 */
Appender.prototype.getArr = function() {
    return this._arr;
};

/**
 * @param {Array} arr
 */
Appender.prototype.appendPush = function(arr) {
    this._arr.push.apply(this._arr, arr);
};

/**
 * @param {Array} arr
 */
Appender.prototype.appendConcat = function(arr) {
    this._arr = this._arr.concat(arr);
};

var appender = new Appender([1, 2, 3]);
var arr = appender.getArr();
appender.appendPush([4, 5, 6]);
appender.appendConcat([7, 8, 9]);
console.log(arr);
console.log(appender.getArr());
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
A kettő nekem nem tűnik azonosnak.
5

Persze, a push a tömböt

MadBence · 2013. Aug. 21. (Sze), 19.34
Persze, a push a tömböt módosítja, a concat meg egy újat gyárt, de két tömb összefűzésére ekvivalens a két megoldás (ha nem érdekel mi lesz az eredeti tömbökkel és nincs másnak referenciája az eredeti tömbre, amely feltételek mondjuk az esetek nem kevés százalékát lefedik)
Tömbök egyesítésére szerintem sokkal tisztább megoldás a concat