ããã«ã¡ã¯å人ã 4ææ«ã«ãæ°ããã³ãŒã¹
ãæ
å ±ã·ã¹ãã ã»ãã¥ãªãã£ããéå§ããŸãã ãããŠä»ãç§ãã¡ã¯ããªããšèšäºã®ç¿»èš³ãå
±æããããšæããŸããããã¯ãã¡ããã³ãŒã¹ã«ãšã£ãŠéåžžã«åœ¹ç«ã€ã§ãããã å
ã®èšäºã¯
ãã¡ãã«ãããŸã ã
ãã®èšäºã§ã¯äž»èŠãªåºç€ã«ã€ããŠèª¬æããŸãããããã¯ãã¹ãŠã®JavaScriptãšã³ãžã³ã«å
±éã§ããããšã³ãžã³ã®äœæè
ïŒ
Benedictããã³
Matias ïŒãåãçµãã§ãã
V8ã ãã«å
±éãããã®ã§ã¯ãããŸããã JavaScriptéçºè
ãšããŠãJavaScriptãšã³ãžã³ã®åäœãããæ·±ãç解ããããšã¯ãå¹ççãªã³ãŒããèšè¿°ããæ¹æ³ãèŠã€ããã®ã«åœ¹ç«ã€ãšèšããŸãã

泚 ïŒèšäºãèªãããããã¬ãŒã³ããŒã·ã§ã³ãèŠããå Žåã¯ããã®ãããªãã芧ãã ãã ã ããã§ãªãå Žåã¯ãã¹ãããããŠèªã¿é²ããŠãã ããã
ãã€ãã©ã€ã³ïŒãã€ãã©ã€ã³ïŒJavaScriptãšã³ãžã³ããã¯ãã¹ãŠãJavaScriptã³ãŒããæžããšããäºå®ããå§ãŸããŸãã ãã®åŸãJavaScriptãšã³ãžã³ã¯ãœãŒã¹ã³ãŒããåŠçããæœè±¡æ§æããªãŒïŒASTïŒãšããŠæ瀺ããŸãã æ§ç¯ãããASTã«åºã¥ããŠãã€ã³ã¿ããªã¿ã¯æçµçã«äœæ¥ã«åãæããããã€ãã³ãŒãã®çæãéå§ã§ããŸãã ãããïŒ ããã¯ããšã³ãžã³ãJavaScriptã³ãŒããå®è¡ããç¬éã§ãã

ããé«éã«å®è¡ããããã«ããããã¡ã€ãªã³ã°ããŒã¿ãšãšãã«æé©åã³ã³ãã€ã©ã«ãã€ãã³ãŒããéä¿¡ã§ããŸãã æé©åã³ã³ãã€ã©ã¯ããããã¡ã€ãªã³ã°ããŒã¿ã«åºã¥ããŠç¹å®ã®ä»®å®ãè¡ããé«åºŠã«æé©åããããã·ã³ã³ãŒããçæããŸãã
ããæç¹ã§ä»®å®ãééã£ãŠããããšãå€æããå Žåãæé©åã³ã³ãã€ã©ãŒã¯ã³ãŒããæé©å解é€ããã€ã³ã¿ãŒããªã¿ãŒã¹ããŒãžã«æ»ããŸãã
JavaScriptãšã³ãžã³ã®ã€ã³ã¿ãŒããªã¿ãŒãã€ãã©ã€ã³/ã³ã³ãã€ã©ãŒããã§ãJavaScriptã³ãŒããå®è¡ãããã€ãã©ã€ã³ã®éšåãã€ãŸãã³ãŒãã解éããã³æé©åãããéšåãããã³äž»èŠãªJavaScriptãšã³ãžã³éã®ããã€ãã®éãã詳ããèŠãŠã¿ãŸãããã
ãã¹ãŠã®äžå¿ã«ããã®ã¯ãã€ã³ã¿ãŒããªã¿ãŒãšæé©åã³ã³ãã€ã©ãŒãå«ããã€ãã©ã€ã³ã§ãã ã€ã³ã¿ãŒããªã¿ãŒã¯æé©åãããŠããªããã€ãã³ãŒããè¿
éã«çæããæé©åã³ã³ãã€ã©ãŒã¯ããé·ãåäœããŸãããåºåã¯é«åºŠã«æé©åããããã·ã³ã³ãŒããæã¡ãŸãã

次ã¯ãChromeãšNode.jsã§äœ¿çšãããJavaScriptãšã³ãžã³ã§ããV8ã®åäœã瀺ããã€ãã©ã€ã³ã§ãã

V8ã®ã€ã³ã¿ãŒããªã¿ãŒã¯IgnitionãšåŒã°ãããã€ãã³ãŒãã®çæãšå®è¡ãæ
åœããŸãã ãã€ãã³ãŒãã®åŠçäžã«æ¬¡ã®ã¹ãããã§å®è¡ãé«éåããããã«äœ¿çšã§ãããããã¡ã€ãªã³ã°ããŒã¿ãåéããŸãã ããšãã°ãé¢æ°ãé »ç¹ã«èµ·åããå Žåãé¢æ°ã
hotã«ãªããšãçæããããã€ãã³ãŒããšãããã¡ã€ãªã³ã°ããŒã¿ãTurboFanãã€ãŸãæé©åã³ã³ãã€ã©ã«è»¢éããããããã¡ã€ãªã³ã°ããŒã¿ã«åºã¥ããŠé«åºŠã«æé©åããããã·ã³ã³ãŒããçæãããŸãã

ããšãã°ãFirefoxãš
SpiderNodeã§äœ¿çšãããMozillaã®SpiderMonkey JavaScriptãšã³ãžã³ã¯ãå°ãç°ãªãåäœãããŸãã 1ã€ã§ã¯ãªãã2ã€ã®æé©åã³ã³ãã€ã©ããããŸãã ã€ã³ã¿ãŒããªã¿ãŒã¯ãæé©åãããã³ãŒããçæããåºæ¬ã³ã³ãã€ã©ãŒïŒããŒã¹ã©ã€ã³ã³ã³ãã€ã©ãŒïŒã«æé©åãããŸãã IonMonkeyã³ã³ãã€ã©ã¯ãã³ãŒãå®è¡äžã«åéããããããã¡ã€ãªã³ã°ããŒã¿ã«å ããŠã倧å¹
ã«æé©åãããã³ãŒããçæã§ããŸãã ææ©çæé©åã倱æããå ŽåãIonMonkeyã¯ããŒã¹ã©ã€ã³ã³ãŒãã«æ»ããŸãã

Chakra-Edgeããã³
Node-ChakraCoreã§äœ¿çšãããMicrosoftã®JavaScriptãšã³ãžã³ã¯ãéåžžã«ãã䌌ãæ§é ãæã¡ã2ã€ã®æé©åã³ã³ãã€ã©ãŒã䜿çšããŸãã ã€ã³ã¿ããªã¿ã¯SimpleJITã§æé©åãããŸãïŒJITã¯ãJust-In-Timeã³ã³ãã€ã©ãã®ç¥èªã§ãå€å°æé©åãããã³ãŒããçæããŸãããããã¡ã€ãªã³ã°ããŒã¿ãšãšãã«ãFullJITã¯ããã«æé©åãããã³ãŒããäœæã§ããŸãã

Safariããã³React Nativeã§äœ¿çšãããAppleã®JavaScriptãšã³ãžã³ã§ããJavaScriptCoreïŒç¥ããŠJSCïŒã«ã¯ãäžè¬ã«3ã€ã®ç°ãªãæé©åã³ã³ãã€ã©ããããŸãã LLIntã¯ããŒã¹ã³ã³ãã€ã©ã«æé©åãããäœã¬ãã«ã€ã³ã¿ãŒããªã¿ã§ãããããŒã¹ã³ã³ãã€ã©ã¯DFGïŒããŒã¿ãããŒã°ã©ãïŒã³ã³ãã€ã©ã«æé©åããããã§ã«FTLïŒFaster Than LightïŒã³ã³ãã€ã©ã«æé©åãããŠããŸãã
äžéšã®ãšã³ãžã³ã«ã¯ãä»ã®ãšã³ãžã³ãããå€ãã®æé©åã³ã³ãã€ã©ãããã®ã¯ãªãã§ããïŒ åŠ¥åããã¹ãŠã§ãã ã€ã³ã¿ãŒããªã¿ãŒã¯ãã€ãã³ãŒãããã°ããåŠçã§ããŸããããã€ãã³ãŒãã ãã§ã¯ç¹ã«å¹ççã§ã¯ãããŸããã äžæ¹ãæé©åã³ã³ãã€ã©ã¯å°ãé·ãåäœããŸãããããå¹ççãªãã·ã³ã³ãŒããçæããŸãã ããã¯ãã³ãŒããè¿
éã«ååŸããïŒã€ã³ã¿ãŒããªã¿ãŒïŒããæ倧ã®ããã©ãŒãã³ã¹ã§ã³ãŒããåŸ
æ©ããŠå®è¡ããïŒã³ã³ãã€ã©ãŒãæé©åããïŒéã®åŠ¥åç¹ã§ãã äžéšã®ãšã³ãžã³ã¯ãæéãšå¹çã®ç°ãªãç¹æ§ãæã€ããã€ãã®æé©åã³ã³ãã€ã©ãè¿œå ããããšãéžæããŸããããã«ããããã®åŠ¥åãœãªã¥ãŒã·ã§ã³ãæé©ã«å¶åŸ¡ããå
éšããã€ã¹ã®è¿œå ã®è€éãã®ã³ã¹ããç解ã§ããŸãã å¥ã®ãã¬ãŒããªãã¯ã¡ã¢ãªäœ¿çšéã§ã;ããè¯ãç解ã®ããã«ãã®
èšäºããã§ãã¯ããŠ
ãã ãã ã
ã€ã³ã¿ããªã¿ãã€ãã©ã€ã³ãšããŸããŸãªJavaScriptãšã³ãžã³ã®ã³ã³ãã€ã©ã®æé©åã®äž»ãªéãã調ã¹ãŸããã ãããã®é«åºŠãªéãã«ããããããããã¹ãŠã®JavaScriptãšã³ãžã³ã¯åãã¢ãŒããã¯ãã£ãåããŠããŸãããã¹ãŠã®ããŒãµãŒãšãããçš®ã®ã€ã³ã¿ãŒããªã¿ãŒ/ã³ã³ãã€ã©ãã€ãã©ã€ã³ãåããŠããŸãã
JavaScriptãªããžã§ã¯ãã¢ãã«JavaScriptãšã³ãžã³ã®å
±éç¹ãšãJavaScriptãªããžã§ã¯ãã®ããããã£ãžã®ã¢ã¯ã»ã¹ãé«éåããããã«äœ¿çšããããªãã¯ãèŠãŠã¿ãŸãããã ãã¹ãŠã®ã¡ã€ã³ãšã³ãžã³ãåæ§ã®æ¹æ³ã§ãããè¡ãããšãããããŸãã
ECMAScriptä»æ§ã§ã¯ã
ããããã£å±æ§ã«äžèŽããæååããŒãæã€èŸæžãšããŠãã¹ãŠã®ãªããžã§ã¯ããå®çŸ©ããŠããŸãã

[[Value]]
ã«å ããŠãä»æ§ã§ã¯æ¬¡ã®ããããã£ãå®çŸ©ããŠããŸãã
[[Writable]]
ã¯ãããããã£ãåå²ãåœãŠã§ãããã©ããã決å®ããŸãã[[Enumerable]]
ã¯ãããããã£ãfor-inã«ãŒãã§è¡šç€ºããããã©ããã決å®ããŸãã[[Configurable]]
ã¯ãããããã£ãåé€ã§ãããã©ããã決å®ããŸãã
è¡šèš
[[ ]]
ã¯å¥åŠã«èŠããŸãããããã¯ä»æ§ãJavaScriptã®ããããã£ãèšè¿°ããæ¹æ³ã§ãã
Object.getOwnPropertyDescriptor
APIã䜿çšããŠãJavaScriptã®ç¹å®ã®ãªããžã§ã¯ãããã³ããããã£ã®ãããã®ããããã£å±æ§ãåŒãç¶ãååŸã§ããŸãã
const object = { foo: 42 }; Object.getOwnPropertyDescriptor(object, 'foo');
ãããJavaScriptããªããžã§ã¯ããå®çŸ©ããæ¹æ³ã§ãã é
åã¯ã©ãã§ããïŒ
é
åã¯ç¹å¥ãªãªããžã§ã¯ããšèããããšãã§ããŸãã å¯äžã®éãã¯ãé
åã«ç¹å¥ãªã€ã³ããã¯ã¹åŠçãããããšã§ãã ããã§ãé
åã€ã³ããã¯ã¹ã¯ECMAScriptä»æ§ã®ç¹å¥ãªçšèªã§ãã JavaScriptã§ã¯ãé
åå
ã®èŠçŽ ã®æ°ã«å¶éããããŸãïŒæ倧2³²â 1ïŒã é
åã€ã³ããã¯ã¹ã¯ããã®ç¯å²ã®å©çšå¯èœãªã€ã³ããã¯ã¹ãã€ãŸã0ã2³²-2ã®æŽæ°å€ã§ãã
å¥ã®éãã¯ãé
åã«ã¯
length
éæ³ã®ããããã£ãããããš
length
ã
const array = ['a', 'b']; array.length;
ãã®äŸã§ã¯ãäœææã®é
åã®é·ãã¯2ã§ãã 次ã«ãå¥ã®èŠçŽ ãã€ã³ããã¯ã¹2ã«å²ãåœãŠããšãé·ããèªåçã«å¢å ããŸãã
JavaScriptã¯ããªããžã§ã¯ãã ãã§ãªãé
åãå®çŸ©ããŸãã ããšãã°ãé
åã€ã³ããã¯ã¹ãå«ããã¹ãŠã®ããŒã¯ãæååãšããŠæ瀺çã«è¡šãããŸãã é
åã®æåã®èŠçŽ ã¯ããŒã0ãã®äžã«ä¿åãããŸãã

length
ããããã£ã¯ãåæäžå¯èœã§æ§æäžå¯èœã§ããããšãå€æããåãªãå¥ã®ããããã£ã§ãã
èŠçŽ ãé
åã«è¿œå ããããšããã«ãJavaScriptã¯
length
ããããã£ã®
[[Value]]
ããããã£ã®å±æ§ãèªåçã«æŽæ°ããŸãã

äžè¬çã«ãé
åã¯ãªããžã§ã¯ããšåæ§ã«åäœãããšèšããŸãã
ããããã£ãžã®ã¢ã¯ã»ã¹ã®æé©åJavaScriptã§ã®ãªããžã§ã¯ãã®å®çŸ©æ¹æ³ãããã£ãã®ã§ãJavaScriptãšã³ãžã³ã䜿çšããŠãªããžã§ã¯ããå¹ççã«æäœããæ¹æ³ãèŠãŠã¿ãŸãããã
æ¥åžžç掻ã§ã¯ãããããã£ãžã®ã¢ã¯ã»ã¹ãæãäžè¬çãªæäœã§ãã ãšã³ãžã³ããããè¿
éã«è¡ãããšã¯éåžžã«éèŠã§ãã
const object = { foo: 'bar', baz: 'qux', };
ãã©ãŒã JavaScriptããã°ã©ã ã§ã¯ãåãããããã£ããŒãå€ãã®ãªããžã§ã¯ãã«å²ãåœãŠãããšã¯éåžžã«äžè¬çãªæ¹æ³ã§ãã 圌ãã¯ãã®ãããªãªããžã§ã¯ãã¯åã
圢ãããŠãããšèšããŸãã
const object1 = { x: 1, y: 2 }; const object2 = { x: 3, y: 4 };
ãŸããéåžžã®ã¡ã«ããºã ã¯ãåã圢åŒã®ãªããžã§ã¯ãã®ããããã£ãžã®ã¢ã¯ã»ã¹ã§ãã
function logX(object) { console.log(object.x);
ãããç¥ã£ãŠããJavaScriptãšã³ãžã³ã¯ããã®åœ¢ç¶ã«åºã¥ããŠãªããžã§ã¯ãã®ããããã£ãžã®ã¢ã¯ã»ã¹ãæé©åã§ããŸãã ä»çµã¿ãã芧ãã ããã
ããããã£xãšyãæã€ãªããžã§ã¯ãããããå
ã»ã©èª¬æããèŸæžã®ããŒã¿æ§é ã䜿çšãããšããŸãã ããããã®å±æ§ãæãããŒæååãå«ãŸããŠããŸãã

object.y,
ãªã©ã®ããããã£ã«ã¢ã¯ã»ã¹ãã
object.y,
ãJavaScriptãšã³ãžã³ã¯ããŒ
'y'
ã§JSObjectãæ€çŽ¢ãããã®ã¯ãšãªã«äžèŽããããããã£å±æ§ãããŒãããŠãæçµçã«
[[Value]]
è¿ããŸãã
ãããããããã®ããããã£å±æ§ã¯ã¡ã¢ãªã®ã©ãã«ä¿åãããŸããïŒ JSObjectã®äžéšãšããŠä¿åããå¿
èŠããããŸããïŒ ãããè¡ããšãåŸã§ãã®ãã©ãŒã ã®ãªããžã§ã¯ããããã«è¡šç€ºãããŸãããã®å Žåãããããã£åã¯åããã©ãŒã ã®ãã¹ãŠã®ãªããžã§ã¯ãã«å¯ŸããŠç¹°ãè¿ããããããJSObjectèªäœã®ããããã£ãšå±æ§ã®ååãå«ãå®å
šãªãã£ã¯ã·ã§ããªãä¿åããã®ã¯ã¹ããŒã¹ã®ç¡é§ã§ãã ããã«ãããå€ãã®éè€ãçºçããã¡ã¢ãªã誀ã£ãŠå²ãåœãŠãããŸãã æé©åã®ããã«ããšã³ãžã³ã¯ãªããžã§ã¯ãã®åœ¢ç¶ãåå¥ã«ä¿åããŸãã

ãã®
Shape
ã¯ã
[[Value]]
ãé€ããã¹ãŠã®ããããã£åãšå±æ§ãå«ãŸããŸãã 代ããã«ããã©ãŒã ã«ã¯JSObjectå
ã®ãªãã»ããå€ãå«ãŸããŠãããããJavaScriptãšã³ãžã³ã¯å€ãæ¢ãå Žæãç¥ã£ãŠããŸãã å
±éã®ãã©ãŒã ãæã€åJSObjectã¯ããã©ãŒã ã®ç¹å®ã®ã€ã³ã¹ã¿ã³ã¹ã瀺ããŸãã ããã§ãåJSObjectã¯ããªããžã§ã¯ãã«åºæã®å€ã®ã¿ãä¿åããå¿
èŠããããŸãã

å©ç¹ã¯ããªããžã§ã¯ãããããããããšããã«æããã«ãªããŸãã ãããã1ã€ã®ãã©ãŒã ãæã£ãŠããå Žåããã©ãŒã ãšããããã£ã«é¢ããæ
å ±ãäžåºŠã ãä¿åããããããããã®æ°ã¯éèŠã§ã¯ãããŸããã
JavaScriptãšã³ãžã³ã¯ãã¹ãŠããã©ãŒã ãæé©åã®æ段ãšããŠäœ¿çšããŸããããã©ãŒã ã«çŽæ¥ååãä»ããããã§ã¯ãããŸããã
- ã¢ã«ãããã¯ããã¥ã¡ã³ãã§ã¯ãããããé衚瀺ã¯ã©ã¹ïŒJavaScriptã¯ã©ã¹ã«é¡äŒŒïŒãšåŒã³ãŸãã
- V8ã§ã¯ããããããããšåŒã³ãŸãã
- ãã£ã¯ã©ã¯ããããã¿ã€ããšåŒã³ãŸãã
- JavaScriptCoreã¯ããããæ§é äœãšåŒã³ãŸãã
- SpiderMonkeyã¯ããããShapesãšåŒã³ãŸãã
ãã®èšäºã§ã¯ãåŒãç¶ããããã
shapes
ãšåŒã³ãŸãã
é·ç§»ãã§ãŒã³ãšããªãŒç¹å®ã®åœ¢ç¶ã®ãªããžã§ã¯ãããããæ°ããããããã£ãè¿œå ããå Žåã¯ã©ããªããŸããïŒ JavaScriptãšã³ãžã³ã¯æ°ãããã©ãŒã ãã©ã®ããã«å®çŸ©ããŸããïŒ
const object = {}; object.x = 5; object.y = 6;
ãã©ãŒã ã¯ãJavaScriptãšã³ãžã³ã§é·ç§»ãã§ãŒã³ãšåŒã°ãããã®ãäœæããŸãã 以äžã«äŸã瀺ããŸãã

ãªããžã§ã¯ãã«ã¯æåã¯ããããã£ããªãã空ã®ãã©ãŒã ã«å¯Ÿå¿ããŠããŸãã 次ã®åŒã¯ãå€5ã®
'x'
ããããã£ããã®ãªããžã§ã¯ãã«è¿œå ãããšã³ãžã³ã¯
'x'
ããããã£ãå«ããã©ãŒã ã«ç§»åããå€5ã¯æåã®ãªãã»ãã0ã§JSObjectã«è¿œå ãããŸãã次ã®è¡ã¯
'y'
ããããã£ãè¿œå ãã次ã«ãšã³ãžã³
'x'
ãš
'y'
äž¡æ¹ããã§ã«å«ãã§ãããå€6ããªãã»ãã1ã§JSObjectã«è¿œå ãããã©ãŒã
泚 ïŒããããã£ãè¿œå ãããé åºã¯ããã©ãŒã ã«åœ±é¿ããŸãã ããšãã°ã{xïŒ4ãyïŒ5}ã¯{yïŒ5ãxïŒ4}ãšã¯ç°ãªã圢åŒã«ãªããŸãã
ãã©ãŒã ããšã«ããããã£ããŒãã«å
šäœãä¿åããå¿
èŠãããããŸããã 代ããã«ãåãã©ãŒã ã¯ãããã«å«ããããšããŠããæ°ããããããã£ã®ã¿ãç¥ãå¿
èŠããããŸãã ããšãã°ããã®å Žåããxãã«é¢ããæ
å ±ãåŸè
ã®åœ¢åŒã§ä¿åããå¿
èŠã¯ãããŸãããããã¯ããã§ãŒã³ã®åæ段éã§æ€åºã§ããããã§ãã ãããæ©èœããããã«ããã©ãŒã ã¯ä»¥åã®ãã©ãŒã ãšããŒãžãããŸãã

JavaScriptã³ãŒãã§
ox
ãèšè¿°ããå ŽåãJavaScriptã¯ã
'x'
ããããã£ããã§ã«æã£ãŠãããã©ãŒã ãæ€åºãããŸã§ãé·ç§»ãã§ãŒã³ã«æ²¿ã£ãŠ
'x'
ããããã£ãæ¢ããŸãã
ããããé·ç§»ãã§ãŒã³ãäœæã§ããªãå Žåã¯ã©ããªããŸããïŒ ããšãã°ã2ã€ã®ç©ºã®ãªããžã§ã¯ããããããããã«ç°ãªãããããã£ãè¿œå ãããšã©ããªããŸããïŒ
const object1 = {}; object1.x = 5; const object2 = {}; object2.y = 6;
ãã®å Žåããã©ã³ãã衚瀺ãããé·ç§»ãã§ãŒã³ã®ä»£ããã«ãé·ç§»ããªãŒãååŸãããŸãã

空ã®ãªããžã§ã¯ã
a
ãäœæããããããã£
'x'
è¿œå ããŸãã ãã®çµæãåäžã®å€ãš2ã€ã®ãã©ãŒã ãå«ã
JSObject
ããããŸãïŒç©ºãšåäžã®
'x'
ããããã£ãæã€ãã©ãŒã ã
2çªç®ã®äŸã¯ã空ã®ãªããžã§ã¯ã
b
ããããšããäºå®ããå§ãŸããŸãããå¥ã®ããããã£
'y'
ãè¿œå ããŸãã ãã®çµæãããã§ã¯ãã©ãŒã ã®2ã€ã®ãã§ãŒã³ãååŸããŸãããæçµçã«ã¯3ã€ã®ãã§ãŒã³ãååŸããŸãã
ããã¯ãåžžã«ç©ºã®ãã©ãŒã ã§éå§ãããšããããšã§ããïŒ å¿
ãããããã§ã¯ãããŸããã ãšã³ãžã³ã¯ããã§ã«ããããã£ãå«ãŸããŠãã
object literal
æé©åã䜿çšããŸãã 空ã®ãªããžã§ã¯ããªãã©ã«ã§å§ãŸãxãè¿œå ããããæ¢ã«
x
å«ããªããžã§ã¯ããªãã©ã«ããããšããŸãã
const object1 = {}; object1.x = 5; const object2 = { x: 6 };
æåã®äŸã§ã¯ã空ã®ãã©ãŒã ããå§ããå
ã»ã©èŠãããã«
x
ãå«ããã§ãŒã³ã«ç§»åããŸãã
object2
ã®å Žåã空ã®ãªããžã§ã¯ããšãã©ã³ãžã·ã§ã³ã§éå§ããã®ã§ã¯ãªããæåããxããã§ã«ãããªããžã§ã¯ããçŽæ¥äœæããã®ãçã«ããªã£ãŠããŸãã

ããããã£
'x'
ãå«ããªããžã§ã¯ãã®ãªãã©ã«ã¯ãæåãã
'x'
ãå«ããã©ãŒã ã§å§ãŸãã空ã®ãã©ãŒã ã¯äºå®äžã¹ããããããŸãã ããã¯ïŒå°ãªããšãïŒV8ãšSpiderMonkeyãè¡ãããšã§ãã æé©åã«ãããé·ç§»ãã§ãŒã³ãççž®ããããªãã©ã«ãããªããžã§ã¯ããçµã¿ç«ãŠããããªããŸãã
Reactã®ã¢ããªã±ãŒã·ã§ã³ã®é©ãã¹ãå€æ
æ§ã«é¢ããBenedictã®ããã°æçš¿ã§ã¯ããã®ãããªåŸ®åŠãªç¹ãããã©ãŒãã³ã¹ã«ã©ã®ããã«åœ±é¿ãããã«ã€ããŠèª¬æããŠããŸãã
ããã«ãããããã£
'x'
ã
'y'
ã
'z'
ãæã€3次å
ãªããžã§ã¯ãã®ãã€ã³ãã®äŸã衚瀺ãããŸãã
const point = {}; point.x = 4; point.y = 5; point.z = 6;
åã«ç解ããããã«ãã¡ã¢ãªå
ã«3ã€ã®ãã©ãŒã ãæã€ãªããžã§ã¯ããäœæããŸãïŒç©ºã®ãã©ãŒã ã¯ã«ãŠã³ãããŸããïŒã ããšãã°ãããã°ã©ã ã§
point.x
ãèšè¿°ããå Žåããã®ãªããžã§ã¯ãã®
'x'
ããããã£ã«ã¢ã¯ã»ã¹ããã«ã¯ãJavaScriptãšã³ãžã³ã¯ãªã³ã¯ããããªã¹ãã«åŸãå¿
èŠããããŸããäžçªäžã«ã

ç¹ã«ããªããžã§ã¯ãã®å€ãã®ããããã£ã䜿çšããŠé »ç¹ã«è¡ãå Žåãéåžžã«é
ããªããŸãã ããããã£ã®æ»çæéã¯
O(n)
ãã€ãŸãããªããžã§ã¯ãã®ããããã£ã®æ°ãšçžé¢ããç·åœ¢é¢æ°ã§ãã ããããã£æ€çŽ¢ãé«éåããããã«ãJavaScriptãšã³ãžã³ã¯ShapeTableããŒã¿æ§é ãè¿œå ããŸãã ShapeTableã¯ãããŒããã©ãŒã ã«ç¹å®ã®æ¹æ³ã§ããããããç®çã®ããããã£ãçæããèŸæžã§ãã

ã¡ãã£ãšåŸ
ã£ãŠãä»åºŠã¯èŸæžæ€çŽ¢ã«æ»ããŸã...ããã¯ãŸãã«ãã©ãŒã ãæåã«çœ®ãããšãã®æåã®ãã®ã§ãïŒ ã§ã¯ããªããã©ãŒã ããæ°ã«ããã®ã§ããããïŒ
å®éããã©ãŒã ã¯
ã€ã³ã©ã€ã³ãã£ãã·ã¥ãšåŒã°ããå¥ã®æé©åã«è²¢ç®ã
ãŸããèšäºã®
第2éšã§ã€ã³ã©ã€ã³ãã£ãã·ã¥ãŸãã¯ICã®æŠå¿µã«ã€ããŠèª¬æããŸãã4æ9æ¥ã«æåãªãŠã€ã«ã¹ã¢ããªã¹ãããã³éåžžå€æåž«ã§ãã
Alexander Kolesnikovãéå¬ãã
ç¡æã®ãªãŒãã³ãŠã§ãããŒã«æåŸ
ããŸãã