Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
JavaScriptの歴史
Search
Naomichi Yamakita
September 10, 2012
47
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JavaScriptの歴史
Naomichi Yamakita
September 10, 2012
More Decks by Naomichi Yamakita
See All by Naomichi Yamakita
現場で試したAI駆動開発
naomichi
0
81
ClickHouse活用によるパフォーマンス改善について
naomichi
0
260
SRE が駆動するプロダクト品質と アーキテクチャ進化の仕組み
naomichi
0
250
今こそ聞きたい!ガバメントクラウド
naomichi
0
73
AWSにおける横断的なログ分析と コストの管理
naomichi
1
7.3k
失敗から始まるリアーキテクト: SREの実践例で見る改善の道筋
naomichi
0
950
プロダクト横断で可視化する ダッシュボードの開発
naomichi
0
430
第一回ライブラリ開発について考える会
naomichi
0
170
Serverless Application Repositoryでトイルを削減する
naomichi
0
380
Featured
See All Featured
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
450
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Optimizing for Happiness
mojombo
378
71k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
560
Between Models and Reality
mayunak
4
490
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Product Roadmaps are Hard
iamctodd
55
13k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
510
Optimising Largest Contentful Paint
csswizardry
37
4k
A Tale of Four Properties
chriscoyier
163
24k
Transcript
+BWB4DSJQUͷྺ࢙ %5$PSQ /BPNJDIJ:BNBLJUB
ΞδΣϯμ +BWB4DSJQUͷ֓ཁͱྺ࢙ ͷτϨϯυ ࠷ޙʹೋݴ͘Β͍
+BWB4DSJQUͷ֓ཁͱྺ࢙
ੜൿ Πϯλʔωοτॳظʢʣ ΞϜϥʔɺ%"ɾ:0ɾ/&࣌ ࣌ɺμΠφϛοΫͳίϯςϯπΛ࡞Δʹɺ$(*"DUJWF9$POUSPMɺ +BWB"QQMFU͕ඞཁͩͬͨ ͜ΕΒͷٕज़ॳ৺ऀʹෑډ͕ߴ͔ͬͨ
ੜൿ ʮͬͱखܰʹɺΠϯλϥΫςΟϒͳ ػೳΛ͍࣋ͨͤͨ͜ͱͰ͖ͳ͍͔ʯ /FUTDBQF$PNNVOJDBUJPOT
ੜൿ /FUTDBQF$PNNVOJDBUJPOTࣾʹΑͬͯ-JWF4DSJQU͕։ൃ͞ΕΔ ࣌/FUTDBQF$PNNVOJDBUJPOTͱ4VO.JDSPTZTUFNʢݱ0SBDMFʣ͕ ఏܞ͍ͯͨ͜͠ͱʢ+BWB͕ྲྀߦͬͯͨ͜ͱʣ͋Γɺ໊শΛ+BWB4DSJQU ʹมߋ /FUTDBQF/BWJHBUPSͰॳొ
ݴޠͷಛੑ ΠϯλϓϦλݴޠ ίϯύΠϧ͕ෆཁ ߏจ͕+BWBʹࣅ͍ͯΔ ͨͩ͠+BWB+BWB4DSJQU
ະͩʹʮ͋ʔ)5.-ͱҰॹʹ+BWBमਖ਼͠ͱ͍ͯʯͱ͔ݴ͏ਓ͕͍Δ ಈతܕએݴ ؔܕϓϩάϥϛϯά ΦϒδΣΫτࢦ +BWB1)1͕ΫϥεϕʔεͷΦϒδΣΫτࢦͰ͋Δͷʹର͠ɺ +BWB4DSJQUϓϩτλΠϓϕʔεͷΦϒδΣΫτࢦͰ͋Δ
ϓϩτλΠϓϕʔεͷΦϒδΣΫτࢦ +BWB4DSJQU͕࣋ͭશͯͷσʔλʢϓϦϛςΟϒܕΛআ͖ʣΦϒδΣΫτ શͯͷؔΦϒδΣΫτQSPUPUZQFϓϩύςΟΛ࣋ͭ var IPad = function() {
this.vendor = "Apple"; }; IPad.prototype = { name: "iPad", late: 2011, }; var NewIPad = function(late) { this.late = late; }; NewIPad.prototype = new IPad(); NewIPad.prototype.name = "iPad mini"; var newIPad = new NewIPad(2012); console.log(newIPad.vendor); // (1) console.log(newIPad.late); // (2) console.log(newipad.name); // (3) "QQMF J1BENJOJ lJz͕খจࣈͳͷͰ l6ODBVHIU3FGFSFODF&SSPS OFXJQBEJTOPUEF fi OFEzͰͨ͠ ʢେจࣈɾখจࣈ۠ผ͞ΕΔ
ϓϩτλΠϓΫΠζ Կ৭ʹͳΔͰ͠ΐ͏ var Container = function(){}; Container.prototype = {
color: "red" }; var container = new Container(); console.log(container.color); // (1) Container.prototype = { color: "blue" }; console.log(container.color); // (2) var container2 = new Container(); console.log(container2.color); // (3) Container.prototype.color = "yellow"; console.log(container.color); // (4) console.log(container2.color); // (5)
+BWB4DSJQU͕࣋ͭXJOEPXΦϒδΣΫτ ΫϥΠΞϯταΠυ+BWB4DSJQUϒϥβΛૢ࡞͢Δ"1*Λఏڙ͍ͯ͠Δ OBWJHBUPS MPDBUJPO IJTUPSZ
TDSFFO GSBNFT EPDVNFOUʢ%0.ʣ QBSFOU UPQ TFMG
ᴈ໌ظʢʙʣ *OUFSOFU&YQMPSFSʹ+4DSJQU͕ࡌ͞Εɺٸʹීٴ͕࢝·Δ +4DSJQU.JDSPTPGU͕+BWB4DSJQUΛϕʔεʹಠ࣮ࣗͨ͠ݴޠ ɺ*OUFSOFU&YQMPSFS͔Βຊ֨తͳ%ZOBNJD)5.-࣌ಥೖ )5.- $44
+BWB4DSJQUʢ%0.ʣΛͬͨμΠφϛοΫίϯςϯπ ϒϥβઓ૪ͷ࢝·Γ *OUFSOFU&YQMPSFSWT/FTDBQF/BWJHBUPS
%0.ʢ%PDVNFOU0CKFDU.PEFMʣ +BWB4DSJQU͔Β)5.-9.-Λૢ࡞͢ΔͨΊͷ"1* %0.Λ͏͜ͱͰɺ)5.-ʹಛఆͷཁૉଐੑΛՃͨ͠Γɺطଘͷଐੑ Λมߋ͢Δ͜ͱ͕Ͱ͖Δ %0.+BWB4DSJQUͷαϒηοτͰͳ͍ʢ༷͕ಠཱ͍ͯ͠Δʣ <div id="foo">
<span>a</span> <span>b</span> <span>c</span> </div> <script> var foo = document.getElementById("foo"); var elements = foo.getElementsByTagName("span"); console.log(elements[0].innerHTML); </script>
ΠϕϯτʢΠϕϯτϋϯυϥʣ Ϣʔβ͕ൃੜͤ͞ΔΠϕϯτʹର͠ɺΠϕϯτϋϯυϥʢؔʣΛ࣮ߦ͢Δ ʮૹ৴Ϙλϯ͕ԡ͞ΕͨΒϑΥʔϜͷσʔλΛݕূ͢Δʯ ʮೖྗ͞ΕͨΩʔͷจࣈΛνΣοΫ͢Δʯ Πϕϯτϋϯυϥͷछྨ
PODMJDL POLFZVQ PODIBOHF POMPBE POTFMFDU
Πϕϯτϋϯυϥͷ͍ํ <script> function changeGreeting(value) { document.getElementById('greeting-message').innerText = value; } </script>
<form action="onclick.html" method="post"> <div class="form-field"> <label for="greeting">Your greeting</label> <input type="text" id="greeting" name="greeting" value="" onkeyup="changeGreeting(this.value)" /> </div> </form> <p id="greeting-message"></p>
ΠϕϯτʢΠϕϯτϦεφʣ ԿΒ͔ͷΠϕϯτΛड͚औͬͯॲཧΛ࣮ߦ͢Δ Πϕϯτϋϯυϥͭͷཁૉʹରͭ͠ͷΠϕϯτ͔࣮͠ߦͰ͖ͳ͍͕ɺΠ ϕϯτϦεφෳͷΠϕϯτΛ࣮ߦ͢Δ͜ͱ͕Ͱ͖Δ <script> // ಉ͡ཁૉʹෳͷϋϯυϥ͕ొ͞ΕͯΔ߹ɺޙʹࢦఆͨ͠ํ͕༏ઌ͞ΕΔ
window.onload = function() { console.log(‘Hello!’); }; window.onload = function() { conosle.log(‘good bye!’); }; </script>
ΠϕϯτϦεφͷ͍ํ <!doctype html> <html> <head> </head> <body> <form action="onclick.html" method="post">
<div class="form-field"> <label for="greeting">Your greeting</label> <input type="text" id="greeting" name="greeting" value="" /> </div> </form> <p id="greeting-message"></p> </body> <script> var greetingMessage = document.getElementById('greeting'); greetingMessage.addEventListener('keyup', function(e) { document.getElementById('greeting-message').innerText = e.target.value; }, false); </script> </html>
%)5.-ͰͰ͖Δ͜ͱͷදྫ ϚεΛಈ͔͢ͱϙΠϯλʹˑ͕͖ͭ·ͱ͏ ઇͷ݁থ͕߱Δ ʮӈΫϦοΫېࢭͰ͢ʂʂʂʯͱΞϥʔτΛग़͢͜ͱ͕Ͱ͖Δ
ණՏظͷ౸དྷ ֤ϒϥβϕϯμʔಠࣗͷ༷Λ֦ு͢ΔͨΊɺϒϥβؒͷޓੑߴ ͍ͷͱݴ͑ͳ͔ͬͨ ҰͭͷॲཧΛ࣮ߦ͍͚ͨͩ͠ͳͷʹɺϒϥβ͝ͱʹίʔυΛذͯ͠ هड़͢Δ͜ͱ͋Γɺଟ͘ͷόουϊϋΛੜΉ݁Ռʹ ηΩϡϦςΟϗʔϧͨ͘͞Μʂ
ʮ+BWB4DSJQUΦϯऑͷۃΈʂʯ ઇ͕߱ΔαΠτ͕૿͑ɺٿͷؾީ͕ظʹͬͯפྫྷԽ ණՏظ࣌ ɺ&$."ʢඪ४Խن֨ʣ͕ެ։͞ΕΔ
த൫"+"9ͷొ 8FCٕज़௨৴ճઢͷൃలʹΑΓɺຊ֨తʹ8FCΞϓϦ͕ීٴ࢝͠ΊΔ 8FC "+"9ʢඇಉظ੍ޚʣ͕ొ %).5- 9.-)UUQ3FRVFTUΛΈ߹Θٕͤͨज़
(PPHMF.BQTͷొ 9.-)UUQ3FRVFTU +BWB4DSJQUͷ)551௨৴ػೳΛ༻͍ͯɺಈతϑΝΠϧΛಡΈࠐΉ"1* ΫϩευϝΠϯ੍ʹΑΓɺ֎෦αʔόͷϑΝΠϧΛಡΈࠐΉ͜ͱͰ ͖ͳ͍ʢͨͩ͠+40/1Λ͑ಡΈࠐΈՄೳʣ
"+"9ϥΠϒϥϦ͕ଓʑͱొ͠ɺ࠶ͼ+BWB4DSJQU͕٭ޫΛཋͼ࢝ΊΔ දతͳϥΠϒϥϦ QSPUPUZQFKTɺ:6*ɺK2VFSZ ػೳ ΫϩεϒϥβରԠ
"+"9ػೳ ηϨΫλΛͬͨ%0.ૢ࡞ Ϧον6*ɺ69ͷఏڙ ޙ"+"9ϥΠϒϥϦͷొ
K2VFSZͷαϯϓϧίʔυ <!doctype html> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></ script> <script> $(document).ready(function(){
$('#greeting').keyup(function(e){ $('#greeting-message').text(e.target.value); }); }); </script> </head> <body> <form action="onclick.html" method="post"> <div class="form-field"> <label for="greeting">Your greeting</label> <input type="text" id="greeting" name="greeting" value="" /> </div> </form> <p id="greeting-message"></p> </body> </html>
ϒϥβઓ૪࠶ͼ 3&45"1*ͷར༻͕ྲྀߦΓ࢝ΊΔ GBDFCPPLɺ5XJUUFSɺBNB[POɺNJYJ .P[JMMB'PVOEBUJPOʹΑΔ+BWB4DSJQUͷύϑΥʔϚϯεվળ +BWB4DSJQUͷߴԽڝ૪ʢظϦϦʔεαΠΫϧʣ͕࢝·Δ
)5.-$44ͷ࣮ணʑͱਐߦத ֤ϒϥβ͕ࡌ͢Δ+BWB4DSJQUΤϯδϯ $ISPNF7 'JSFGPY+ÅHFS.POLFZ *OUFSOFU&YQMPSFS$IBLSB
ͷτϨϯυ
+BWB4DSJQU.7$࣌ͷນ։͚ "+"9ϥΠϒϥϦ͕ొ͓͔ͨ͛͠ͰϑϩϯτΤϯυͷ։ൃָʹͳͬͨ ࠓޙ+BWB4DSJQUΛ͏໘·͢·͢૿͑ͯ͘ΔͰ͋Ζ͏ )5.-ɺ$44ɺ3&45"1*ʜ ෳࡶԽ͢ΔίʔυʹରԠ͢ΔͨΊ+BWB4DSJQUʹ.7$ͷ͕͖ͨʂ
.7$ϑϨʔϜϫʔΫͷൺֱ ଓʑͱ.7$ϑϨʔϜϫʔΫ͕ొ͍ͯ͠Δ 5IF5PQ+BWBTDSJQU.7$'SBNFXPSLT3FWJFXFE IUUQDPEFCSJFGDPNUIFUPQKBWBTDSJQUNWDGSBNFXPSLTSFWJFXFE
༗ྗީิ#BDLCPOFKT ࠷ۙ(PPHMF͕ϦϦʔεͨ͠"OHVMBS+4ג ओཁϑϨʔϜϫʔΫ
"OHVMBS+4ͷαϯϓϧίʔυ <!doctype html> <html ng-app> <head> <script src="http://code.angularjs.org/ angular-1.0.1.min.js"></script> </head>
<body> <form action="onclick.html" method="post"> <div class="form-field"> <label for="greeting">Your greeting</label> <input type="text" ng-model="yourName" placeholder="Input greeting!"> </div> </form> <p>{{yourName}}</p> </body> </html>
"OHVMBS+4σϞϯετϨʔγϣϯ 6*όΠϯσΟϯά IUUQQIQVOJUBOHVMBSKTVJ@CJOEJOHT ίϯτϩʔϥΛ͏ IUUQQIQVOJUBOHVMBSKTMPPQ@ fi
MUFS 5XJUUFS"1*ͷར༻ IUUQQIQVOJUBOHVMBSKTUXJUUFS
͜Ε͔Βͷ+BWB4DSJQU αʔόαΠυ+BWB4DSJQUʢ/PEFKTɺ(PPHMF"QQT4DSJQUʣͷར༻ ΫϥΠΞϯταʔόαΠυશͯΛ+BWB4DSJQUԽ͢Δ͜ͱՄೳ
࠷ޙʹೋݴ͘Β͍
+BWB4DSJQUΠΠ͡ΌΜʂ ϑΥʔϜͷσʔλνΣοΫ+BWB4DSJQUʹҰ͠Α͏ʂ ةݥɻ+BWB4DSJQUແޮʹͰ͖Δ͜ͱΛΕͯͳΒͳ͍ αʔόαΠυͰݕূ͍ͯ͠ͳ͍ͱɺࢥΘ͵ηΩϡϦςΟϗʔϧΛಥ͔Ε ΔՄೳੑ͕͋Δ αʔόαΠυͷݕূΛඞਢͱ͠ɺ+BWB4DSJQUͷݕূ͋͘·Ͱิॿతͳ
ͷͱߟ͑Δ͖ 1$ɺεϚʔτϑΥϯɺΨϥέʔʹରԠͪ͠Ό͓͏ʂ ೦ͳ͕ΒΨϥέʔʢώϡʔνϟʔϑΥϯʣ+BWB4DSJQUʹඇରԠ ຊະͩΨϥέʔׂ͕ʂ
+BWB4DSJQUͷ։ൃςΫχοΫ ιʔείʔυͷѹॖ $%/ͷར༻ σόοάߏจͷར༻ σόοάɺϓϩϑΝΠϦϯάπʔϧͷར༻
$ISPNFσϕϩούʔπʔϧ 'JSFGPY'JSFCVH ςετπʔϧͷಋೖ 26OJU +FOLJOT