Baseline Widely available
Reflect.construct()
ì ì ë©ìëë new
ì°ì°ìì²ë¼ ëìíë í¨ìì
ëë¤. new target(...args)
를 í¸ì¶íë ê²ê³¼ ê°ìµëë¤. ì¶ê° 기ë¥ì¼ë¡ ë¤ë¥¸ íë¡í íì
ì ì§ì í ìë ììµëë¤.
function func1(a, b, c) {
this.sum = a + b + c;
}
const args = [1, 2, 3];
const object1 = new func1(...args);
const object2 = Reflect.construct(func1, args);
console.log(object2.sum);
// Expected output: 6
console.log(object1.sum);
// Expected output: 6
구문
Reflect.construct(target, argumentsList[, newTarget])
매ê°ë³ì
target
í¸ì¶í ëì í¨ì.
argumentsList
target
ì 매ê°ë³ìë¡ ì ë¬í ë°°ì´í ê°ì²´.
newTarget
Optional
íë¡í íì
ì¼ë¡ ì¬ì©í ìì±ì. new.target
ì°ì°ìë íì¸íì¸ì. newTarget
ì´ ì£¼ì´ì§ì§ ììì ë target
ì ì¬ì©í©ëë¤.
target
ì ìì±ìë¡ íê³ ì£¼ì´ì§ 매ê°ë³ì를 ì ë¬í´ ìì±í target
(ëë, ì§ì íë¤ë©´ newTarget
)ì ìë¡ì´ ì¸ì¤í´ì¤.
target
ëë newTarget
ì´ ìì±ìê° ìëë©´ TypeError
.
Reflect.construct()
ë ìì±ì를 ê°ë³ 길ì´ì 매ê°ë³ìë¡ í¸ì¶í ì ììµëë¤. (new
ì°ì°ìì ì ê° êµ¬ë¬¸ì ì¬ì©í´ë ê°ë¥í©ëë¤)
var obj = new Foo(...args);
var obj = Reflect.construct(Foo, args);
Reflect.construct()
vs Object.create()
Reflect
ì ëì
ì´ì ìë ììì ìì±ìì íë¡í íì
ì Object.create()
를 ì¬ì©í´ ê°ì²´ë¥¼ ìì±í ì ìììµëë¤.
function OneClass() {
this.name = "one";
}
function OtherClass() {
this.name = "other";
}
// Calling this:
var obj1 = Reflect.construct(OneClass, args, OtherClass);
// ...has the same result as this:
var obj2 = Object.create(OtherClass.prototype);
OneClass.apply(obj2, args);
console.log(obj1.name); // 'one'
console.log(obj2.name); // 'one'
console.log(obj1 instanceof OneClass); // false
console.log(obj2 instanceof OneClass); // false
console.log(obj1 instanceof OtherClass); // true
console.log(obj2 instanceof OtherClass); // true
ê·¸ë¬ë, ê²°ê³¼ë ëì¼íëë¼ë ê³¼ì ìë ì¤ìí ì°¨ì´ê° íë ì¡´ì¬í©ëë¤. Object.create()
ì Function.prototype.apply()
를 ì¬ì©í ë, ê°ì²´ ìì±ì new
í¤ìëê° ê´ì¬íì§ ìì¼ë¯ë¡ new.target
ì°ì°ìê° undefined
를 ê°ë¦¬íµëë¤.
ë°ë©´ Reflect.construct()
를 í¸ì¶íë©´, newTarget
ì´ ì¡´ì¬íë©´ new.target
ì°ì°ìê° newTarget
ì, ìëë©´ target
ì ê°ë¦¬íµëë¤.
function OneClass() {
console.log("OneClass");
console.log(new.target);
}
function OtherClass() {
console.log("OtherClass");
console.log(new.target);
}
var obj1 = Reflect.construct(OneClass, args);
// Output:
// OneClass
// function OneClass { ... }
var obj2 = Reflect.construct(OneClass, args, OtherClass);
// Output:
// OneClass
// function OtherClass { ... }
var obj3 = Object.create(OtherClass.prototype);
OneClass.apply(obj3, args);
// Output:
// OneClass
// undefined
ìì Reflect.construct()
ì¬ì©í기
var d = Reflect.construct(Date, [1776, 6, 4]);
d instanceof Date; // true
d.getFullYear(); // 1776
ëª
ì¸ ë¸ë¼ì°ì í¸íì± ê°ì´ 보기
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