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
46
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
57
ClickHouse活用によるパフォーマンス改善について
naomichi
0
230
SRE が駆動するプロダクト品質と アーキテクチャ進化の仕組み
naomichi
0
240
今こそ聞きたい!ガバメントクラウド
naomichi
0
72
AWSにおける横断的なログ分析と コストの管理
naomichi
1
7.2k
失敗から始まるリアーキテクト: SREの実践例で見る改善の道筋
naomichi
0
940
プロダクト横断で可視化する ダッシュボードの開発
naomichi
0
430
第一回ライブラリ開発について考える会
naomichi
0
160
Serverless Application Repositoryでトイルを削減する
naomichi
0
380
Featured
See All Featured
Faster Mobile Websites
deanohume
310
32k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
690
A Tale of Four Properties
chriscoyier
163
24k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
430
Speed Design
sergeychernyshev
33
2.1k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Design in an AI World
tapps
1
320
Six Lessons from altMBA
skipperchong
29
4.5k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
The Cost Of JavaScript in 2023
addyosmani
55
10k
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