Baseline Widely available
ì ê° êµ¬ë¬¸ì ì¬ì©íë©´ ë°°ì´ì´ë 문ìì´ê³¼ ê°ì´ ë°ë³µ ê°ë¥í 문ì를 0ê° ì´ìì ì¸ì (í¨ìë¡ í¸ì¶í ê²½ì°) ëë ìì (ë°°ì´ ë¦¬í°ë´ì ê²½ì°)ë¡ íì¥íì¬, 0ê° ì´ìì í¤-ê°ì ìì¼ë¡ ê°ì²´ë¡ íì¥ìí¬ ì ììµëë¤.
ìëí´ ë³´ê¸°function sum(x, y, z) {
return x + y + z;
}
const numbers = [1, 2, 3];
console.log(sum(...numbers));
// Expected output: 6
console.log(sum.apply(null, numbers));
// Expected output: 6
구문
í¨ì í¸ì¶:
myFunction(...iterableObj);
ë°°ì´ ë¦¬í°ë´ê³¼ 문ìì´:
[...iterableObj, "4", "five", 6];
ê°ì²´ 리í°ë´(ECMAScript 2018ìì ì¶ê°):
let objClone = { ...obj };
ìì í¨ì í¸ì¶ììì ì ê° apply()
ëì²´
ì¼ë°ì ì¼ë¡ ë°°ì´ì ì리먼í¸ë¥¼ í¨ìì ì¸ìë¡ ì¬ì©íê³ ì í ë Function.prototype.apply()
를 ì¬ì©íììµëë¤.
function myFunction(x, y, z) {}
var args = [0, 1, 2];
myFunction.apply(null, args);
ì ê° êµ¬ë¬¸ì ì¬ì©í´ ì ì½ëë ë¤ìê³¼ ê°ì´ ìì±ë ì ììµëë¤.
function myFunction(x, y, z) {}
var args = [0, 1, 2];
myFunction(...args);
ì¸ì 목ë¡ì 모ë ì¸ìë ì ê° êµ¬ë¬¸ì ì¬ì©í ì ìì¼ë©°, ì¬ë¬ë² ì¬ì©ë ìë ììµëë¤.
function myFunction(v, w, x, y, z) {}
var args = [0, 1];
myFunction(-1, ...args, 2, ...[3]);
new
ì ì ì©
new
를 ì¬ì©í´ ìì±ì를 í¸ì¶ í ë, ë°°ì´ê³¼ apply
(apply
ë [[Call]]
ì íì§ë§ [[Construct]]
ë ê·¸ë ì§ ìì) 를 ì§ì ì¬ì©íë ê²ì ë¶ê°íìµëë¤. íì§ë§, ì ê° êµ¬ë¬¸ ëë¶ì ë°°ì´ì new
ì í¨ê» ì½ê² ì¬ì©ë ì ììµëë¤.
var dateFields = [1970, 0, 1]; // 1 Jan 1970
var d = new Date(...dateFields);
ì ê° êµ¬ë¬¸ ìì´ íë¼ë¯¸í°ì ë°°ì´ê³¼ í¨ê» new
를 ì¬ì©íë ¤ë©´, ë¶ë¶ì ì¸ ì´í리ì¼ì´ì
ì íµí´ ê°ì ì ì¼ë¡ í´ì¼ í©ëë¤.
function applyAndNew(constructor, args) {
function partial() {
return constructor.apply(this, args);
}
if (typeof constructor.prototype === "object") {
partial.prototype = Object.create(constructor.prototype);
}
return partial;
}
function myConstructor() {
console.log("arguments.length: " + arguments.length);
console.log(arguments);
this.prop1 = "val1";
this.prop2 = "val2";
}
var myArguments = ["hi", "how", "are", "you", "mr", null];
var myConstructorWithArguments = applyAndNew(myConstructor, myArguments);
console.log(new myConstructorWithArguments());
// (internal log of myConstructor): arguments.length: 6
// (internal log of myConstructor): ["hi", "how", "are", "you", "mr", null]
// (log of "new myConstructorWithArguments"): {prop1: "val1", prop2: "val2"}
ë°°ì´ ë¦¬í°ë´ììì ì ê° ë ê°ë ¥í ë°°ì´ ë¦¬í°ë´
ì ê° êµ¬ë¬¸ ìì´, ì´ë¯¸ ì¡´ì¬íë ë°°ì´ì ì¼ë¶ë¡ íë ìë¡ì´ ë°°ì´ì ìì±í기ì, ë°°ì´ ë¦¬í°ë´ 문ë²ì ë ì´ì ì¶©ë¶íì§ ìì¼ë©° push()
, splice()
, concat()
ë±ì ì¡°í©ì ì¬ì©íë ëì ëª
ë ¹í ì½ë를 ì¬ì©í´ì¼ íìµëë¤. ì ê° êµ¬ë¬¸ì¼ë¡ ì´ë í¨ì¬ ë ê°ê²°í´ì¡ìµëë¤.
var parts = ["shoulders", "knees"];
var lyrics = ["head", ...parts, "and", "toes"];
// ["head", "shoulders", "knees", "and", "toes"]
ì¸ì 목ë¡ì ìí spread ì²ë¼, ...
ì ë°°ì´ ë¦¬í°ë´ì ì´ëììë ì¬ì©ë ì ìì¼ë©° ì¬ë¬ë² ì¬ì©ë ìë ììµëë¤.
var arr = [1, 2, 3];
var arr2 = [...arr]; // arr.slice() ì ì ì¬
arr2.push(4);
// arr2 ì [1, 2, 3, 4] ì´ ë¨
// arr ì ìí¥ì ë°ì§ ìê³ ë¨ì ìì
ì°¸ê³ : Spread 문ë²ì ë°°ì´ì ë³µì¬í ë 1 ë 벨 ê¹ì´ìì í¨ê³¼ì ì¼ë¡ ëìí©ëë¤. ê·¸ë¬ë¯ë¡, ë¤ì ìì ì ê°ì´ ë¤ì°¨ì ë°°ì´ì ë³µì¬íëê²ìë ì í©íì§ ìì ì ììµëë¤. (Object.assign()
ê³¼ ì ê° êµ¬ë¬¸ì´ ëì¼í©ëë¤)
var a = [[1], [2], [3]];
var b = [...a];
b.shift().shift(); // 1
// ì´ì ë°°ì´ a ë ìí¥ì ë°ì: [[], [2], [3]]
ë°°ì´ì ì°ê²°íë ë ëì ë°©ë²
Array.prototype.concat()
ì ë°°ì´ì ì¡´ì¬íë ë°°ì´ì ëì ì´ì´ë¶ì´ëë° ì¢
ì¢
ì¬ì©ë©ëë¤. ì ê° êµ¬ë¬¸ ìì´, ì´ë ë¤ìê³¼ ê°ì´ ìì±ë©ëë¤.
var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
// arr2 ì 모ë í목ì arr1 ì ë¶ì
arr1 = arr1.concat(arr2);
ì ê° êµ¬ë¬¸ì ì¬ì©í´ ì´ë ë¤ìê³¼ ê°ìì§ëë¤.
var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
arr1 = [...arr1, ...arr2]; // arr1 ì ì´ì [0, 1, 2, 3, 4, 5]
Array.prototype.unshift()
ë ì¡´ì¬íë ë°°ì´ì ìì ì§ì ì ë°°ì´ì ê°ë¤ì ì½ì
íëë° ì¢
ì¢
ì¬ì©ë©ëë¤. ì ê° êµ¬ë¬¸ ìì´, ì´ë ë¤ìê³¼ ê°ì´ ìì±ë©ëë¤.
var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
// arr2 ì 모ë í목ì arr1 ì ìì ë¶ì
Array.prototype.unshift.apply(arr1, arr2); // arr1 ì ì´ì [3, 4, 5, 0, 1, 2] ê° ë¨
ì ê° êµ¬ë¬¸ì¼ë¡, ì´ë ë¤ìê³¼ ê°ìì§ëë¤.
var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
arr1 = [...arr2, ...arr1]; // arr1 ì ì´ì [3, 4, 5, 0, 1, 2] ê° ë¨
ì°¸ê³ : unshift()
ì ë¬ë¦¬, ì ìì ë ìë¡ì´ arr1
ì ë§ë¤ë©° 기존 ë°°ì´ì ë³ííì§ ììµëë¤.
ECMAScriptì Rest/Spread íë¡í¼í° ì ì (stage 4) ì ê°ì²´ 리í°ë´ì ìì± ì ê°ë¥¼ ì¶ê°í©ëë¤. ì´ë ì ê³µë ê°ì²´ê° ìì í ì´ê±°í íë¡í¼í°ë¥¼ ìë¡ì´ ê°ì²´ë¡ ë³µì¬í©ëë¤.
ìì ë³µì (prototype ì ì¸) ëë ê°ì²´ì ë³í©ì ì´ì Object.assign()
ë³´ë¤ ë ì§§ì 문ë²ì ì¬ì©í´ ê°ë¥í©ëë¤.
var obj1 = { foo: "bar", x: 42 };
var obj2 = { foo: "baz", y: 13 };
var clonedObj = { ...obj1 };
// Object { foo: "bar", x: 42 }
var mergedObj = { ...obj1, ...obj2 };
// Object { foo: "baz", x: 42, y: 13 }
Object.assign()
ì setters 를 í¸ë¦¬ê±°íì§ë§ ì ê° êµ¬ë¬¸ì ê·¸ë ì§ ììì ì ìí©ëë¤.
Object.assign()
í¨ì를 ëì²´íê±°ë íë´ë¼ ì ììì ì ìí©ëë¤.
var obj1 = { foo: "bar", x: 42 };
var obj2 = { foo: "baz", y: 13 };
const merge = (...objects) => ({ ...objects });
var mergedObj = merge(obj1, obj2);
// Object { 0: { foo: 'bar', x: 42 }, 1: { foo: 'baz', y: 13 } }
var mergedObj = merge({}, obj1, obj2);
// Object { 0: {}, 1: { foo: 'bar', x: 42 }, 2: { foo: 'baz', y: 13 } }
ì ìì ìì, ì ê° êµ¬ë¬¸ì ììëë¡ ëìíì§ ììµëë¤. ëë¨¸ì§ ë§¤ê°ë³ìë¡ ì¸í´, ì¸ì ë°°ì´ì ê°ì²´ 리í°ë´ë¡ ì ê°í©ëë¤.
ì´í°ë¬ë¸ ì ì©ì ê° êµ¬ë¬¸ (spread íë¡í¼í°ì¸ ê²½ì° ì ì¸) ì iterable ê°ì²´ìë§ ì ì©ë©ëë¤.
var obj = { key1: "value1" };
var array = [...obj]; // TypeError: obj is not iterable
ë§ì ê°ê³¼ Spread
í¨ì í¸ì¶ìì spread 문ë²ì ì¬ì©í ë, JavaScript ìì§ì ì¸ì ê¸¸ì´ ì íì ì´ê³¼íì§ ìëë¡ ì£¼ìí©ëë¤. ìì¸í ë´ì©ì apply()
를 ë³´ì¸ì.
ëë¨¸ì§ êµ¬ë¬¸ì ì ê° êµ¬ë¬¸ê³¼ ì íí ê°ìë³´ì´ì§ë§, ëì ë°°ì´ì´ë ê°ì²´ë¥¼ ë¶í´í ë ì¬ì©ë©ëë¤. ì´ë¤ ë©´ìì, ëë¨¸ì§ êµ¬ë¬¸ì ì ê° êµ¬ë¬¸ê³¼ ë°ëì ëë¤. ì ê°ë ë°°ì´ì ê·¸ ì리먼í¸ë¡ 'íì¥' íë ë°ë©´, ë머ì§ë ì¬ë¬ ì리먼í¸ë¥¼ ìì§íë©° ì´ë¥¼ íëì ì리먼í¸ë¡ 'ìì¶' í©ëë¤. ëë¨¸ì§ ë§¤ê°ë³ì 문ì를 ë³´ì¸ì.
ëª ì¸ì ë¸ë¼ì°ì í¸íì± ê°ì´ 보기...
')...
')RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4