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
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
450
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
420
Building Applications with DynamoDB
mza
96
7.2k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
280
Designing for Performance
lara
611
70k
Automating Front-end Workflow
addyosmani
1369
210k
For a Future-Friendly Web
brad_frost
183
10k
So, you think you're a good person
axbom
PRO
2
2.2k
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