1 00:00:00,000 --> 00:00:05,900 2 00:00:05,900 --> 00:00:07,170 >> SAM GREEN: สวัสดีทุกคน 3 00:00:07,170 --> 00:00:08,640 ยินดีต้อนรับสู่งานสัมมนาของเรา 4 00:00:08,640 --> 00:00:10,009 ฉันชื่อแซม. 5 00:00:10,009 --> 00:00:11,050 HUGH Zabriskie: ฉันฮิวจ์ 6 00:00:11,050 --> 00:00:17,420 SAM GREEN: และเรากำลังจะพูดคุยในวันนี้ เกี่ยวกับเว็บ JavaScript และเสียงของ API 7 00:00:17,420 --> 00:00:21,180 เพียงแค่การเริ่มต้นนี้เป็นเค้าร่าง ของวาระการประชุมของเราสำหรับการสัมมนา 8 00:00:21,180 --> 00:00:25,350 เรากำลังจะเริ่มต้นด้วยการพูดคุยเกี่ยวกับ เหตุผลที่คุณควรจะสนใจในเว็บ 9 00:00:25,350 --> 00:00:30,130 API เสียงทำไม JavaScript ภาษาที่คุณต้องการสำหรับมัน 10 00:00:30,130 --> 00:00:32,619 แล้วพูดคุยเกี่ยวกับ JavaScript essentials-- เพื่อให้เหมือน 11 00:00:32,619 --> 00:00:34,800 คุณเดินผ่านบางส่วน พื้นฐานของภาษา 12 00:00:34,800 --> 00:00:37,290 แล้วพูดคุยเกี่ยวกับ เสียง API ในระดับสูง 13 00:00:37,290 --> 00:00:41,140 จากนั้นฮิวจ์จะพูดคุยเกี่ยวกับบางส่วน ในขั้นตอนของการผลิตเสียง 14 00:00:41,140 --> 00:00:45,509 แล้วซีเควนสาธิตนี้น่ากลัว โครงการเขาสร้างและแสดงรหัส 15 00:00:45,509 --> 00:00:48,050 และจากนั้นเราจะได้มีเวลาสำหรับ คำถามในตอนท้ายสำหรับคนที่ 16 00:00:48,050 --> 00:00:49,593 ที่อยู่ที่นี่มีชีวิตอยู่ 17 00:00:49,593 --> 00:00:50,540 >> HUGH Zabriskie: เย็น 18 00:00:50,540 --> 00:00:50,990 >> SAM GREEN: เย็น 19 00:00:50,990 --> 00:00:51,383 >> HUGH Zabriskie: เย็น 20 00:00:51,383 --> 00:00:52,170 ฉันจะสำรอง 21 00:00:52,170 --> 00:00:54,960 >> SAM GREEN: ดังนั้นสิ่งแรกแรก 22 00:00:54,960 --> 00:00:57,840 ดังนั้นหนึ่งในสิ่งที่ดี เกี่ยวกับเว็บเสียงของ API 23 00:00:57,840 --> 00:01:00,480 คือการที่ไม่มีการตั้งค่าที่จำเป็น 24 00:01:00,480 --> 00:01:04,230 มันมาในตัว เบราว์เซอร์ที่ทันสมัย​​ที่สุด 25 00:01:04,230 --> 00:01:08,630 รวมทั้งโครเมี่ยม, ขอบทั้งหมด พวงของ others-- ทุกคน 26 00:01:08,630 --> 00:01:12,650 ส่วนใหญ่ของ คนใช้วันนี้ 27 00:01:12,650 --> 00:01:14,807 จึงมีการตั้งค่าไม่ขึ้น นอกเหนือจากเพียงการ 28 00:01:14,807 --> 00:01:16,890 เว็บเซิร์ฟเวอร์ไปสำหรับ คุณสามารถเริ่มต้นการทำงาน 29 00:01:16,890 --> 00:01:18,420 ในโครงการของคุณซึ่งเป็นที่ดี 30 00:01:18,420 --> 00:01:21,500 31 00:01:21,500 --> 00:01:24,190 >> เราขอแนะนำให้สวย อย่างหนักว่าคุณจะพิจารณา 32 00:01:24,190 --> 00:01:26,530 ใช้ Chrome สำหรับ การพัฒนาเว็บ JavaScript, 33 00:01:26,530 --> 00:01:30,260 เพียงเพราะนักพัฒนา เครื่องมือที่ดีจริงๆ 34 00:01:30,260 --> 00:01:33,220 เป็นตัวอย่างของเพียงสิ่งที่เราหมายถึง โดยกล่าวว่าเปิด JavaScript ของคุณ 35 00:01:33,220 --> 00:01:38,600 console-- ถ้าคุณไปเป็นโครเมี่ยม และคุณดูหน้าเว็บใด ๆ , 36 00:01:38,600 --> 00:01:43,897 และคุณคลิกซ้าย ตรวจสอบธาตุแล้ว 37 00:01:43,897 --> 00:01:46,730 คุณไปนี้หล่นลงเ​​พียงเล็กน้อย ที่นี่และคุณคลิกที่คอนโซล 38 00:01:46,730 --> 00:01:50,660 คุณจะเห็นสิ่งที่เปิดดู จำนวนมากเช่นที่พร้อมรับคำสั่งคุณ 39 00:01:50,660 --> 00:01:53,720 อาจจะเห็นบน Mac ของคุณหรือในรหัส 40 00:01:53,720 --> 00:01:59,260 และเช่นเดียวกับที่เราสามารถ คำสั่งประเภทที่นี่เช่นล้าง 41 00:01:59,260 --> 00:02:01,350 และคำสั่งอื่น ๆ เช่นเดียวกับที่ 42 00:02:01,350 --> 00:02:04,267 เราสามารถสร้างตัวแปรเช่น เราจะได้เห็นต่อไปใน JavaScript 43 00:02:04,267 --> 00:02:07,100 ดังนั้นสิ่งที่เราสามารถทำได้ใน JavaScript เราสามารถทำอะไรกับคอนโซล 44 00:02:07,100 --> 00:02:11,430 และนั่นคือวิธีที่สะดวกสุดที่จะ เริ่มเล่นรอบกับ APIs 45 00:02:11,430 --> 00:02:15,760 และได้รับความสะดวกสบายด้วย JavaScript ขวาปิดค้างคาว 46 00:02:15,760 --> 00:02:18,290 ตั้งค่าไม่จำเป็นต้อง ซึ่งเป็นสิ่งที่ดีจริงๆ 47 00:02:18,290 --> 00:02:18,790 เย็น. 48 00:02:18,790 --> 00:02:22,064 49 00:02:22,064 --> 00:02:22,880 ที่น่ากลัว 50 00:02:22,880 --> 00:02:24,780 >> ดังนั้นเพียงแค่สิ่งหนึ่งที่จะเพิ่มมากขึ้น 51 00:02:24,780 --> 00:02:27,780 หากคุณมี questions-- มี หลายท่านที่ไม่ได้อยู่ที่นี่อยู่ 52 00:02:27,780 --> 00:02:31,232 อย่าลังเลที่จะส่งอีเมล us-- เหล่านี้ คือที่อยู่อีเมลของเรา 53 00:02:31,232 --> 00:02:33,190 หากคุณมีคำถาม คุณไม่ต้องการที่จะถามเรา 54 00:02:33,190 --> 00:02:36,160 เช่นโอ้ฉันมีข้อผิดพลาด ในรหัสของฉันหรือบางสิ่งบางอย่าง 55 00:02:36,160 --> 00:02:39,270 ที่เฉพาะเจาะจงน้อยมาก บางทีมันเป็นครั้งแรกของ Google 56 00:02:39,270 --> 00:02:42,340 มีจำนวนมากของทรัพยากรที่ดี เกี่ยวกับเว็บ Audio API ออกมี 57 00:02:42,340 --> 00:02:44,089 มันเป็นเรื่องดีจริงๆ เอกสารและจะเป็น 58 00:02:44,089 --> 00:02:47,194 ใช้โดยตันของคนใน อุตสาหกรรมและคนที่เป็นเพียง 59 00:02:47,194 --> 00:02:48,610 การสร้างสิ่งที่สนุกสำหรับตัวเอง 60 00:02:48,610 --> 00:02:51,306 ดังนั้นควรจะมีเป็นจำนวนมาก ของทรัพยากรออกมี 61 00:02:51,306 --> 00:02:53,040 ที่น่ากลัว 62 00:02:53,040 --> 00:02:56,100 >> เย็นดังนั้นทำไมเว็บ API เสียงหรือไม่ 63 00:02:56,100 --> 00:02:59,840 แผนภาพนี้เป็นนิด ๆ หน่อย ๆ ของวิวัฒนาการของวิธีการที่ 64 00:02:59,840 --> 00:03:04,100 เสียงบนเว็บที่มีการเติบโตในช่วงเวลา 65 00:03:04,100 --> 00:03:13,080 Bgsound เป็นเหมือนแท็กเดิม ว่า Internet Explorer ใช้ในการสนับสนุน 66 00:03:13,080 --> 00:03:16,790 มันได้รับอนุญาตเท่านั้นสำหรับเสียงสวยขั้นพื้นฐาน ฟังก์ชั่นที่ไม่ได้แข็งแกร่งมาก 67 00:03:16,790 --> 00:03:19,380 และคุณไม่สามารถทำอะไรได้ ลำดับที่ซับซ้อน 68 00:03:19,380 --> 00:03:21,890 หรือควบคุมเสียงเมื่อเริ่มต้น และหยุดตัวดีมาก 69 00:03:21,890 --> 00:03:23,930 ดังนั้นจึงไม่ได้โดยเฉพาะอย่างยิ่ง การพัฒนาที่ดี 70 00:03:23,930 --> 00:03:27,470 แล้วหลังจากที่แฟลช along-- มาซึ่ง 71 00:03:27,470 --> 00:03:31,712 ฉันแน่ใจว่าพวกคุณมีความคุ้นเคยทั้งหมด กับ Flash-- อาจจะไม่ได้วิธีการทำงาน 72 00:03:31,712 --> 00:03:32,920 แต่คุณเคยเห็นมันอย่างแน่นอน 73 00:03:32,920 --> 00:03:35,586 คุณได้มีการปรับปรุง Flash ของคุณ Plug-in ทุกชนิดของสิ่งที่ 74 00:03:35,586 --> 00:03:40,110 และที่แน่นอนขยายช่วง ของการทำงานที่มีอยู่ 75 00:03:40,110 --> 00:03:45,370 แต่ทำให้ผู้ใช้ติดตั้ง plug-in แน่นอน 76 00:03:45,370 --> 00:03:48,480 ข้อเสียเปรียบที่จะรวมทั้งแฟลช ในการประยุกต์ใช้คุณใช่ไหม? 77 00:03:48,480 --> 00:03:52,410 เพราะคุณก็ขึ้นอยู่กับ ผู้ใช้ไปและหานี้ plug-in 78 00:03:52,410 --> 00:03:54,660 และอาจจะถูกเปิด โดยขั้นตอนพิเศษนี้ 79 00:03:54,660 --> 00:03:56,640 พวกเขาจะต้องใช้เวลาในการใช้ app ของคุณ 80 00:03:56,640 --> 00:04:01,270 และจากนั้นก็อาจจะมีการปรับปรุง ที่จะทำลายแอพลิเคชันของคุณทั้งหมด 81 00:04:01,270 --> 00:04:03,880 และจะสิ้นสุดขึ้นเป็นฝันร้าย สำหรับนักพัฒนาที่มากเกินไป 82 00:04:03,880 --> 00:04:06,230 เพื่อให้เป็นสิ่งกีดขวาง 83 00:04:06,230 --> 00:04:10,480 >> และแล้วหลังจากนั้นมาพร้อม แท็กเสียง HTM​​L ซึ่ง 84 00:04:10,480 --> 00:04:16,579 เป็นคุณลักษณะของ HTM​​L-- ที่ทันสมัย​​มากขึ้นซึ่ง ที่ได้รับอนุญาตอย่างแน่นอนสำหรับหลายสิ่งมากขึ้น 85 00:04:16,579 --> 00:04:20,050 แต่สิ่งที่คุณสามารถทำได้ มีนิด ๆ หน่อย ๆ ถูก จำกัด เพียงแค่ 86 00:04:20,050 --> 00:04:22,730 เป็นผลมาจากสิ่งที่ HTML ที่เป็นความสามารถในการ 87 00:04:22,730 --> 00:04:26,060 ดังนั้นเมื่อ JavaScript API เว็บเสียง API ที่ 88 00:04:26,060 --> 00:04:29,290 กลายเป็นมาตรฐาน ปฏิบัติในเบราว์เซอร์ 89 00:04:29,290 --> 00:04:32,490 ที่ขยายจริงๆชุด โอกาสสำหรับนักพัฒนา 90 00:04:32,490 --> 00:04:36,590 จริงๆได้รับเข้าไปในอาคาร สิ่งที่เย็นสำหรับเว็บ 91 00:04:36,590 --> 00:04:39,220 เป็นเวลานานได้มี รับเครื่องมือที่มีประสิทธิภาพจริงๆ 92 00:04:39,220 --> 00:04:44,360 สำหรับการใช้งานเสียงพื้นเมือง like-- ทุกคนรู้ GarageBand, 93 00:04:44,360 --> 00:04:48,360 และจากนั้นเห็นได้ชัดว่ามีมากขึ้น การใช้งานผสมเสียงระดับมืออาชีพ 94 00:04:48,360 --> 00:04:49,640 และชนิดของสิ่งที่ 95 00:04:49,640 --> 00:04:52,690 แต่มีไม่ได้เป็น ดีจริงๆ Cloud-- ไม่ 96 00:04:52,690 --> 00:04:55,811 เมฆใช่ผมคิดว่า Cloud-- แพลตฟอร์มบนเว็บ 97 00:04:55,811 --> 00:04:58,310 ที่จะช่วยให้นักพัฒนาที่จะ สร้างโปรแกรมประยุกต์สำหรับคน 98 00:04:58,310 --> 00:05:00,570 ที่จะทำเสียงผสม 99 00:05:00,570 --> 00:05:03,960 และในขณะที่เขาจะแสดงให้คุณ ต่อมาเว็บ Audio API 100 00:05:03,960 --> 00:05:07,470 ช่วยให้มีประสิทธิภาพจริงๆ สิ่งที่จะเกิดขึ้นจริงเพียง 101 00:05:07,470 --> 00:05:09,597 ซึ่งเป็นเย็นสวย 102 00:05:09,597 --> 00:05:12,680 เพื่อให้การเรียนการสอนไปทำไมคุณ ควรจะดูส่วนที่เหลือของการสัมมนา 103 00:05:12,680 --> 00:05:14,350 เป็นพื้น 104 00:05:14,350 --> 00:05:17,880 >> และตอนนี้ฉันจะพูดคุยเกี่ยวกับ บาง JavaScript-- เพียงองค์ประกอบพื้นฐาน 105 00:05:17,880 --> 00:05:20,240 ของภาษาเพื่อให้ เราสามารถจะอยู่ในหน้าเดียวกัน 106 00:05:20,240 --> 00:05:22,470 เมื่อเราพูดคุยเกี่ยวกับ API นิด ๆ หน่อย ๆ ในภายหลัง 107 00:05:22,470 --> 00:05:23,260 เย็น. 108 00:05:23,260 --> 00:05:26,192 >> ดังนั้นนี้เป็นบทสรุป 109 00:05:26,192 --> 00:05:27,150 ฉันลืมนี้อยู่ที่นี่ 110 00:05:27,150 --> 00:05:27,510 ใช่. 111 00:05:27,510 --> 00:05:27,870 >> HUGH Zabriskie: มีสองภาพนิ่งที่นี่ 112 00:05:27,870 --> 00:05:30,245 >> SAM GREEN: นี่คือสรุป บางส่วนของข้อ จำกัด 113 00:05:30,245 --> 00:05:35,220 ของอื่น ๆ ที่มีผลผูกพัน, วิธีการเดิม 114 00:05:35,220 --> 00:05:37,828 และแล้วตอนนี้เรามีสิ่งเหล่านี้ 115 00:05:37,828 --> 00:05:40,011 เย็น. 116 00:05:40,011 --> 00:05:40,510 ที่น่ากลัว 117 00:05:40,510 --> 00:05:43,200 >> ดังนั้นข้อมูลสำคัญ JavaScript 118 00:05:43,200 --> 00:05:47,230 สิ่งแรกที่มี แตกต่างที่สำคัญสวย 119 00:05:47,230 --> 00:05:49,940 เมื่อเทียบกับใน JavaScript ใน ภาษาเช่น C ในทาง 120 00:05:49,940 --> 00:05:52,050 ตัวแปรที่ถูกสร้างขึ้น 121 00:05:52,050 --> 00:05:55,634 ดังนั้นใน C เราจะใช้ในการมี พิมพ์ตัวแปรของเราใช่มั้ย? 122 00:05:55,634 --> 00:05:57,800 และผมไม่ได้หมายถึงประเภทเช่น พิมพ์ไว้ในผมหมายถึงชนิด 123 00:05:57,800 --> 00:06:01,900 เช่นกำหนดให้มีความหมาย type-- เหมือนเป็น int, ลอย, ถ่าน 124 00:06:01,900 --> 00:06:05,210 ใน C เราถูกนำมาใช้จริงๆ ต้องสร้างตัวแปร 125 00:06:05,210 --> 00:06:09,690 แล้วติดชนิดสำหรับที่ ตลอดเวลาที่เราใช้ตัวแปรที่ 126 00:06:09,690 --> 00:06:13,990 และนั่นคือไม่จำเป็นต้องแย่ลง แต่มันอาจจะยากที่จะใช้ 127 00:06:13,990 --> 00:06:16,190 หนึ่งในคุณสมบัติที่เย็น ของ JavaScript เป็น 128 00:06:16,190 --> 00:06:19,740 ตัวแปรที่มีสิ่งที่เรียกว่า "พิมพ์แบบไดนามิก" ซึ่ง 129 00:06:19,740 --> 00:06:22,500 หมายความว่าผมสามารถสร้าง ตัวแปรที่มีไวยากรณ์ที่ 130 00:06:22,500 --> 00:06:25,800 varX เท่ากับ 5 ยกตัวอย่างเช่น 131 00:06:25,800 --> 00:06:27,790 ที่ แต่เดิมสร้าง จำนวนเต็ม variable-- 132 00:06:27,790 --> 00:06:29,870 ที่เหมาะสมภายใต้ เครื่องดูดควัน somewhere-- แต่ฉัน 133 00:06:29,870 --> 00:06:33,040 สามารถเปลี่ยนตัวแปรที่ ในการอ้างถึงสตริง 134 00:06:33,040 --> 00:06:35,820 โดยไม่ต้องทำอะไรเช่น สร้างตัวแปรใหม่ 135 00:06:35,820 --> 00:06:37,880 ผมไม่จำเป็นต้องกังวล เกี่ยวกับการเปลี่ยนแปลงประเภท 136 00:06:37,880 --> 00:06:45,440 JavaScript รู้ว่าชนิดของ การเปลี่ยนแปลงที่เกิดขึ้นและแบบไดนามิก 137 00:06:45,440 --> 00:06:48,510 >> จึงมีประโยชน์ และข้อเสียนั้น 138 00:06:48,510 --> 00:06:51,250 ขณะที่ทุกคนที่ทำงานใน จาวาสคริปต์ในขณะที่อาจจะรู้ 139 00:06:51,250 --> 00:06:53,600 มีบางครั้งที่มี คุณอาจไม่ได้ตั้งใจ 140 00:06:53,600 --> 00:06:57,720 เปลี่ยนชนิดของตัวแปรและ ได้จัดการกับการเปลี่ยนแปลงชนิดที่ 141 00:06:57,720 --> 00:07:01,120 แล้ว JavaScript ของคุณ สามารถ crash-- หรือข้อยกเว้น 142 00:07:01,120 --> 00:07:06,070 ถูกโยนเพราะคุณจะมี ประเภทผิดเมื่อคุณคาดหวังประเภทหนึ่ง 143 00:07:06,070 --> 00:07:07,040 เย็น. 144 00:07:07,040 --> 00:07:11,470 >> ดังนั้น scoping-- ซึ่งเป็นเหมือนถ้าเรา จำได้ว่าในช่วงต้นสัปดาห์ที่ผ่านมาแน่นอน 145 00:07:11,470 --> 00:07:15,420 หมายถึงวิธีการที่มองเห็นตัวแปร เป็นและในสิ่งที่พื้นที่ของรหัส 146 00:07:15,420 --> 00:07:18,400 จากข้อมูลทั้งหมดที่มีลักษณะคล้ายกันมาก วิธีการมันก็ดูในซี 147 00:07:18,400 --> 00:07:24,755 ดังนั้นตัวแปรที่ถูกกำหนดขอบเขตโดยทั่วไป ภายในวงเล็บปีกกาภายในฟังก์ชั่น 148 00:07:24,755 --> 00:07:27,005 แล้วยังมี ตัวแปรทั่วโลกขอบเขตที่ 149 00:07:27,005 --> 00:07:29,171 are-- ถ้าคุณเขียนตัวแปร ด้านนอกของฟังก์ชั่น 150 00:07:29,171 --> 00:07:31,790 มันจะปรากฏในข้อความทั้งหมด 151 00:07:31,790 --> 00:07:35,840 >> หนึ่งความแตกต่างระหว่าง JavaScript และ C โดยเฉพาะอย่างยิ่ง 152 00:07:35,840 --> 00:07:40,280 คือว่าถ้าคุณประกาศทั่วโลก ตัวแปรที่ใดก็ได้ในแฟ้มข้อความ 153 00:07:40,280 --> 00:07:43,324 ก็สามารถมองเห็นได้ในการทำงานใด ๆ ภายในแฟ้มข้อความที่ 154 00:07:43,324 --> 00:07:44,240 นั่นเป็นที่ถูกต้องใช่มั้ย? 155 00:07:44,240 --> 00:07:46,330 >> HUGH Zabriskie: อ๋อ 156 00:07:46,330 --> 00:07:49,120 >> SAM GREEN: ดังนั้นที่ยังเล็ก ๆ น้อย ๆ ขี้ขลาดบิตในการเปรียบเทียบกับซี 157 00:07:49,120 --> 00:07:52,660 ที่เรามักจะต้องมีของเรา นิยามตัวแปรข้างต้นสถานที่ 158 00:07:52,660 --> 00:07:53,770 พวกเขาถูกนำมาใช้ 159 00:07:53,770 --> 00:07:57,957 นั่นไม่ใช่กฎที่บังคับใช้ อีกต่อไปเช่นนั้นแตกต่างกันเล็กน้อย 160 00:07:57,957 --> 00:08:00,540 และอีกครั้งเพียงเพื่อ reemphasize, เมื่อเทียบกับทั่วโลก variables-- ท้องถิ่น 161 00:08:00,540 --> 00:08:03,457 คล้ายกับซีคุณอาจมี สองตัวแปรที่มีชื่อเดียวกัน 162 00:08:03,457 --> 00:08:06,540 และมีหนึ่งในชื่อของพวกเขาจะเงา โดยตัวแปรท้องถิ่นถ้าหนึ่งของพวกเขา 163 00:08:06,540 --> 00:08:07,546 เป็นระดับโลก 164 00:08:07,546 --> 00:08:09,420 ดังนั้นชนิดที่คล้ายกันของ ปัญหาที่บางส่วนของคุณ 165 00:08:09,420 --> 00:08:11,920 อาจจะวิ่งเข้ามาในบาง ของปัญหาของคุณตั้งค่าเพื่อให้ห่างไกล 166 00:08:11,920 --> 00:08:14,450 เย็นเพื่อให้เป็นตัวแปร 167 00:08:14,450 --> 00:08:20,310 >> การควบคุมการไหลที่มีความหมายเหมือน ถ้า-else-- stuff-- ตรรกะและลูป 168 00:08:20,310 --> 00:08:24,510 เพื่อที่จะเริ่มต้นด้วยการนี​​้เป็นสิ่งที่ถ้า-อื่น งบมีลักษณะเหมือนใน JavaScript 169 00:08:24,510 --> 00:08:29,750 ตำแหน่งของสิ่งต่างๆ บนเส้นนั้นไม่สำคัญ 170 00:08:29,750 --> 00:08:34,409 นี่เป็นเพียงหนึ่งในการประชุม หาวิธีรหัสโครงสร้างพวกเรา 171 00:08:34,409 --> 00:08:38,634 เช่นเดียวกับใน C เรามี "ถ้า" คำสั่งวงเล็บ 172 00:08:38,634 --> 00:08:40,840 173 00:08:40,840 --> 00:08:42,090 นั่นไม่ใช่สิ่งที่ผมหมายถึงการทำ 174 00:08:42,090 --> 00:08:44,860 175 00:08:44,860 --> 00:08:45,550 ฉันทำมันอีกครั้ง. 176 00:08:45,550 --> 00:08:46,841 >> HUGH Zabriskie: พยายามที่จะออก? 177 00:08:46,841 --> 00:08:49,770 SAM สีเขียว: ไม่มีผม แค่พยายามที่จะขยาย 178 00:08:49,770 --> 00:08:50,660 มันไม่สำคัญว่า 179 00:08:50,660 --> 00:08:54,730 180 00:08:54,730 --> 00:08:59,370 >> ดังนั้นเราจึงมี "ถ้า" คำสั่งและ เรามีสภาพภายในของมัน 181 00:08:59,370 --> 00:09:03,130 ที่ประเมินจริงหรือเท็จ และที่กำหนดหรือไม่ 182 00:09:03,130 --> 00:09:04,510 เราใส่บล็อกของรหัสที่ 183 00:09:04,510 --> 00:09:09,860 และเช่นเดียวกันเรามีอย่างอื่นถ้าและ อื่นเช่นเดียวกับที่เราใช้ในการใน C. 184 00:09:09,860 --> 00:09:14,010 >> นอกจากนี้คุณยังควรจะสะดวกสบายสวย ทันทีทันใดกับลูป, 185 00:09:14,010 --> 00:09:16,440 เพราะพวกเขายังมอง มากเช่นลักษณะ C 186 00:09:16,440 --> 00:09:19,600 แต่คุณจะสังเกตเห็นอีกครั้งว่าเรา มีแทน int initializations, 187 00:09:19,600 --> 00:09:22,570 เรามี var initializations 188 00:09:22,570 --> 00:09:24,650 และผมคิดว่าคุณมี จะต้องระมัดระวังที่จะทำให้ 189 00:09:24,650 --> 00:09:28,460 แน่ใจว่าคุณไม่เปลี่ยนค่า ของฉันจาก int ไปสตริง 190 00:09:28,460 --> 00:09:31,780 ตัวอย่างเช่นเพราะเห็นว่าเป็นไปได้ ทำให้เกิดพฤติกรรมที่แปลก ๆ ที่คุณอาจจะไม่ 191 00:09:31,780 --> 00:09:32,280 คาดหวัง 192 00:09:32,280 --> 00:09:35,750 แต่ควรดู สวยที่คุ้นเคยเป็นอย่างดี 193 00:09:35,750 --> 00:09:39,460 >> ดังนั้นนี่คือสิ่งที่เริ่มต้นที่จะ ได้รับเล็กน้อยบ้าใน JavaScript 194 00:09:39,460 --> 00:09:44,920 สำหรับคนที่จะไปจาก พื้นหลังของซีมีฟังก์ชั่น 195 00:09:44,920 --> 00:09:48,070 ใน JavaScript และมีวิธีหนึ่งที่ ในการประกาศฟังก์ชั่นที่มีลักษณะ 196 00:09:48,070 --> 00:09:50,361 การจัดเรียงของที่คล้ายกันที่ C และ แล้วมีอีกคนหนึ่งว่า 197 00:09:50,361 --> 00:09:52,450 มีลักษณะที่แตกต่างกันชนิดของ 198 00:09:52,450 --> 00:09:54,930 >> รุ่นแรก ซึ่งเราสามารถดูที่นี่ 199 00:09:54,930 --> 00:09:59,260 เป็นชนิดของ C-เหมือนที่ เราบอกว่านี้เป็นฟังก์ชั่น 200 00:09:59,260 --> 00:10:01,490 ให้มันชื่อให้ จำนวนของการขัดแย้งที่ 201 00:10:01,490 --> 00:10:05,150 แล้วเนื้อหาของฟังก์ชั่น ไปภายในวงเล็บปีกกาเหล่านั้น 202 00:10:05,150 --> 00:10:08,850 เราจะเห็นตัวอย่างของ ข้อโต้แย้งในเวลาเพียงสอง 203 00:10:08,850 --> 00:10:13,420 >> ในขณะที่ในบรรทัดถัดไปเราจะเห็นโอ้ นี่เป็นตัวแปรที่เรียกว่า "myFunction" 204 00:10:13,420 --> 00:10:17,546 และเราก็เท่ากับนี้ function-- thing-- ทั่วไปที่ 205 00:10:17,546 --> 00:10:19,170 ดูเหมือนจะไม่ได้มีอะไรเกิดขึ้น 206 00:10:19,170 --> 00:10:22,780 207 00:10:22,780 --> 00:10:26,080 เหตุผลที่แตกต่างกัน กว่า C คือ JavaScript 208 00:10:26,080 --> 00:10:30,040 เป็นสิ่งที่เรียกว่าเป็นภาษาที่ทำงาน หรือมีองค์ประกอบการทำงานซึ่งหมายความว่า 209 00:10:30,040 --> 00:10:33,510 ที่ทำหน้าที่เป็นจริงค่า 210 00:10:33,510 --> 00:10:39,520 และนั่นหมายความว่าเราสามารถตั้งค่า ตัวแปรเท่ากับฟังก์ชั่น 211 00:10:39,520 --> 00:10:43,210 และจากนั้นย้ายที่ทำงาน รอบผ่านมันเป็นอาร์กิวเมนต์ 212 00:10:43,210 --> 00:10:46,550 ทำทุกสิ่ง เช่นเดียวกับที่มีฟังก์ชั่น 213 00:10:46,550 --> 00:10:49,682 >> สิ่งหนึ่งที่อื่น ๆ ที่จะ note-- ฟังก์ชั่นจะเขียน 214 00:10:49,682 --> 00:10:51,140 มีจำนวนที่แน่นอนของการขัดแย้ง 215 00:10:51,140 --> 00:10:54,056 เราจะเห็นตัวอย่างของฟังก์ชัน กับข้อโต้แย้งในสไลด์ถัดไป 216 00:10:54,056 --> 00:10:56,720 แต่จะไม่ JavaScript เสียงโห่ร้องที่คุณถ้าคุณลอง 217 00:10:56,720 --> 00:10:59,330 ที่จะใช้ฟังก์ชั่นที่ จำนวนที่ไม่ถูกต้องของการขัดแย้ง 218 00:10:59,330 --> 00:11:05,310 มันก็จะทำให้ดีที่สุดที่จะทำให้ ทำหมายความว่าถ้าคุณผ่าน 219 00:11:05,310 --> 00:11:09,410 คุณเรียกฟังก์ชั่นที่คาดว่า ทะเลาะกับอาร์กิวเมนต์ทั้งหมดที่ 220 00:11:09,410 --> 00:11:13,990 ที่จะเกิดขึ้นมันจะทำดีที่สุด และพยายามรันโค้ดที่ 221 00:11:13,990 --> 00:11:16,541 และหากในที่สุดมันก็จะทำงาน เป็นข้อยกเว้นหรือข้อผิดพลาด 222 00:11:16,541 --> 00:11:19,790 มันจะโยนข้อยกเว้นและเพียงแค่ให้ going-- ซึ่งเป็นเพียงหนึ่งในวิธีการ 223 00:11:19,790 --> 00:11:21,070 ที่ทำงาน JavaScript 224 00:11:21,070 --> 00:11:21,781 ใช่. 225 00:11:21,781 --> 00:11:24,207 >> ผู้ชม: เกิดอะไรขึ้นถ้า มีข้อโต้แย้งมากเกินไป? 226 00:11:24,207 --> 00:11:26,040 SAM GREEN: ดังนั้น คำถามคือสิ่งที่เกิดขึ้น 227 00:11:26,040 --> 00:11:27,380 ถ้ามีข้อโต้แย้งมากเกินไป? 228 00:11:27,380 --> 00:11:29,171 และคำตอบก็คือว่า จาวาสคริปต์จะเพียง 229 00:11:29,171 --> 00:11:32,120 ไม่สนใจคนที่มี หลังจากที่คาดว่า 230 00:11:32,120 --> 00:11:36,420 มันจะพยายามที่จะดำเนินการทำงาน เรียกว่าถ้ามันเป็นเพียงแค่สองคนแรก 231 00:11:36,420 --> 00:11:37,075 ขวา? 232 00:11:37,075 --> 00:11:37,700 >> HUGH Zabriskie: ใช่ใช่ 233 00:11:37,700 --> 00:11:39,449 ในทำนองเดียวกันถ้ามี ข้อโต้แย้งน้อยเกินไป 234 00:11:39,449 --> 00:11:42,640 มันเพียงแค่ชนิดของให้โมฆะทั้งหมด ข้อโต้แย้งที่มันไม่ได้มีค่าใด ๆ 235 00:11:42,640 --> 00:11:43,660 สำหรับ. 236 00:11:43,660 --> 00:11:45,810 >> SAM GREEN: ซึ่งสามารถ จริงจะมีประโยชน์ถ้าคุณ 237 00:11:45,810 --> 00:11:49,060 ต้องการที่จะเขียนฟังก์ชั่นที่ ใช้เวลาการขัดแย้งจำนวนตัวแปร 238 00:11:49,060 --> 00:11:55,830 คุณสามารถตั้งค่าเริ่มต้นใน ความหมายของฟังก์ชั่นที่ 239 00:11:55,830 --> 00:11:59,060 และมันสามารถปฏิเสธความจริง การป้อนข้อมูลที่ไม่ได้มี 240 00:11:59,060 --> 00:12:01,584 241 00:12:01,584 --> 00:12:04,000 ดังนั้นผมจึงต้องการที่จะพูดคุยนิด ๆ หน่อย ๆ เพิ่มเติมเกี่ยวกับกระสุนที่ผ่านมานี้ 242 00:12:04,000 --> 00:12:05,541 จุดซึ่งเป็นฟังก์ชั่นนี้เป็นค่า 243 00:12:05,541 --> 00:12:07,930 244 00:12:07,930 --> 00:12:11,010 นี่คือตัวอย่างที่เป็น นิด ๆ หน่อย ๆ เหลือเชื่อ 245 00:12:11,010 --> 00:12:14,880 ถ้าคุณเพิ่งอ่านมันและไม่คิดว่า เกี่ยวกับสิ่งที่เกิดขึ้นเป็นครั้งที่สอง 246 00:12:14,880 --> 00:12:17,910 ดังนั้นให้ดูเพียง บรรทัดแรกที่นี่ 247 00:12:17,910 --> 00:12:24,360 เรามีตัวแปรนี้ f1 ที่เราพูด ฟังก์ชั่นที่ไม่สิ่งนี้ 248 00:12:24,360 --> 00:12:28,535 และเนื้อหาของฟังก์ชัน จะ console.log (สวัสดี) 249 00:12:28,535 --> 00:12:32,220 คุณสามารถคิดว่า console.log เป็น JavaScript เทียบเท่า printf 250 00:12:32,220 --> 00:12:35,510 ดังนั้นสิ่งที่จะเกิดขึ้นคือถ้าเรา เรียกใช้รหัสนี้ในเบราว์เซอร์ของเรา 251 00:12:35,510 --> 00:12:37,530 มันจะพิมพ์ออกมาสตริง 252 00:12:37,530 --> 00:12:39,342 ฉันสามารถแสดงให้เห็นว่า 253 00:12:39,342 --> 00:12:42,300 ผู้ชม: โดยการเข้าสู่ระบบ แต่ไม่ว่า หมายถึงการที่มันถูกบันทึกไว้ที่ใดที่หนึ่ง? 254 00:12:42,300 --> 00:12:42,550 SAM GREEN: ใช่ 255 00:12:42,550 --> 00:12:44,216 ดังนั้นผมจะแสดงสิ่งที่จะเกิดขึ้น 256 00:12:44,216 --> 00:12:48,085 ดังนั้นคำถามคือสิ่งที่ไม่เข้าสู่ระบบหมายถึงอะไร? 257 00:12:48,085 --> 00:12:51,262 >> HUGH Zabriskie: ดังนั้น console.log เป็นเหมือน printf สำหรับซี 258 00:12:51,262 --> 00:12:52,970 SAM GREEN: ดังนั้น console.log เป็นเหมือน printf, 259 00:12:52,970 --> 00:12:59,240 ดังนั้นถ้าฉันมี console.log นี้ ('สวัสดี') และที่ผมเรียกว่าสตริง "สวัสดี" 260 00:12:59,240 --> 00:13:00,730 ได้รับการพิมพ์ออกมาไปยังคอนโซล 261 00:13:00,730 --> 00:13:03,340 นี่คือคอนโซล 262 00:13:03,340 --> 00:13:05,930 ก็เช่นเดียวกับ printf ที่ จะพิมพ์ออกมาตรฐาน 263 00:13:05,930 --> 00:13:09,050 264 00:13:09,050 --> 00:13:11,230 และเราจะเห็นในนาที แต่นี้เป็นจริง 265 00:13:11,230 --> 00:13:16,529 หมายถึงวัตถุที่คอนโซล และเรียกวิธีการบนวัตถุที่ 266 00:13:16,529 --> 00:13:18,320 นั่นจะทำให้รู้สึกมากขึ้น ในนาทีเมื่อเรา 267 00:13:18,320 --> 00:13:20,660 จะได้รับการพูดคุยเกี่ยวกับ วัตถุใน JavaScript, 268 00:13:20,660 --> 00:13:22,509 แต่ผมคิดว่าผมก็จะพูดถึงว่า 269 00:13:22,509 --> 00:13:24,300 HUGH Zabriskie: เรา ที่ใช้ในการใน C, right-- 270 00:13:24,300 --> 00:13:27,580 เรามักจะเขียนโปรแกรมใหญ่ ในหลักที่จะทำอะไร 271 00:13:27,580 --> 00:13:30,700 แต่สิ่งที่เย็นใน JavaScript คุณ มีชนิดของล่ามที่ 272 00:13:30,700 --> 00:13:33,620 วิ่งในเวลาจริงจึง ใช้เวลาเพียงละบรรทัด 273 00:13:33,620 --> 00:13:35,320 มันก็สามารถแปลว่าในจุดที่ 274 00:13:35,320 --> 00:13:37,403 และติดตามการทำงานของ สิ่งที่ได้ทำงานก่อน 275 00:13:37,403 --> 00:13:41,620 จึงเป็นเครื่องมือที่มีประโยชน์สวย ใช้ console.log ห​​รือคอนโซล 276 00:13:41,620 --> 00:13:46,870 โดยทั่วไปเพียงเล่น รอบด้วย JavaScript 277 00:13:46,870 --> 00:13:51,420 >> SAM GREEN: ดังนั้นจะกลับไปนี้ example-- บรรทัดที่สองของรหัส 278 00:13:51,420 --> 00:13:55,320 ที่นี่สวยเหลือเชื่อในหัวของฉัน 279 00:13:55,320 --> 00:13:59,790 ครั้งแรกที่ผมอ่านบทความนี้ มันเป็นเหมือนสิ่งที่เกิดขึ้น? 280 00:13:59,790 --> 00:14:04,580 ดังนั้นสิ่งที่เกิดขึ้นคือนี้ ประกาศฟังก์ชั่นกล่าวว่า 281 00:14:04,580 --> 00:14:10,170 ฉันมีฟังก์ชั่นที่เรียกว่า f2 ที่คาดหวังว่าหนึ่งในข้อโต้แย้ง, F, 282 00:14:10,170 --> 00:14:12,990 และจากนั้นก็เรียกว่า ฟังก์ชั่นฉซึ่ง 283 00:14:12,990 --> 00:14:17,652 ถูกส่งผ่านไปมันเป็นอาร์กิวเมนต์ มีข้อโต้แย้งไม่ตัวเอง 284 00:14:17,652 --> 00:14:19,110 ดังนั้นที่อาจได้รับความสับสน 285 00:14:19,110 --> 00:14:21,890 286 00:14:21,890 --> 00:14:28,400 ถ้าเราเข้าใจว่านี่เป็นเวลา f1 f2 เป็นอาร์กิวเมนต์แล้วภายในของ f2, 287 00:14:28,400 --> 00:14:31,190 ฉรับ called-- ซึ่งหมายถึง ที่บรรทัดของรหัสนี้ 288 00:14:31,190 --> 00:14:34,192 หลังจากที่ทั้งสองเส้น รหัสผลในการ "สวัสดี" 289 00:14:34,192 --> 00:14:35,400 ถูกพิมพ์ไปยังคอนโซล 290 00:14:35,400 --> 00:14:41,660 291 00:14:41,660 --> 00:14:44,910 >> ความจริงที่ว่าเราสามารถผ่าน ฟังก์ชั่นรอบเป็นค่า 292 00:14:44,910 --> 00:14:47,870 สิ้นสุดขึ้นเป็นหนึ่งในที่สุด คุณลักษณะที่มีประสิทธิภาพของ JavaScript 293 00:14:47,870 --> 00:14:49,700 เป็นภาษาการเขียนโปรแกรม 294 00:14:49,700 --> 00:14:52,782 นอกทั้งหมดของ สิ่งที่น่ากลัวก็สามารถทำ 295 00:14:52,782 --> 00:14:54,990 เช่นเดียวกับคุณลักษณะของการเป็น ภาษาในแง่ของวิธีการ 296 00:14:54,990 --> 00:14:58,400 ว่ามันทำให้สิ่งที่ง่าย ในการเขียนโปรแกรมและช่วยให้ 297 00:14:58,400 --> 00:15:01,060 สำหรับสิ่งที่ไม่ได้โดยเฉพาะอย่างยิ่ง ดีเหมาะไปยังเว็บ 298 00:15:01,060 --> 00:15:04,500 โปรแกรมการทำงานและการทำงาน ด้านการเขียนโปรแกรมจาวาสคริปต์ 299 00:15:04,500 --> 00:15:07,130 เป็นหนึ่งในที่สุด แนวความคิดที่มีประสิทธิภาพที่ 300 00:15:07,130 --> 00:15:11,030 ที่มีอยู่ใน JavaScript-- ถ้าคุณถามฉัน 301 00:15:11,030 --> 00:15:11,960 เย็น. 302 00:15:11,960 --> 00:15:13,534 >> ดังนั้นสิ่งต่อไปที่ 303 00:15:13,534 --> 00:15:16,450 นอกจากจะเป็นการทำงาน นอกจากนี้ยังมีองค์ประกอบของ JavaScript 304 00:15:16,450 --> 00:15:20,510 ที่มีเชิงวัตถุ ซึ่งเป็นหนึ่งในมาก 305 00:15:20,510 --> 00:15:23,800 คำฉวัดเฉวียนเป็นที่นิยมในสาขาวิชาวิทยาการคอมพิวเตอร์ 306 00:15:23,800 --> 00:15:27,040 การเขียนโปรแกรมเชิงวัตถุ เป็นสิ่งที่เป็นที่นิยมมาก 307 00:15:27,040 --> 00:15:34,210 JavaScript มีรุ่นนั้น ที่ผมเชื่อว่าทุกคนนอกจากนี้ยังมีค่า 308 00:15:34,210 --> 00:15:41,475 วัตถุซึ่งหมายความว่าทุกวัตถ​​ุ ล้อมด้วยกันจำนวนของค่าบางอย่าง 309 00:15:41,475 --> 00:15:44,020 310 00:15:44,020 --> 00:15:49,750 ดังนั้นสำหรับค่าที่ง่ายเช่น จำนวนเต็มเช่น varX เท่ากับ 5 311 00:15:49,750 --> 00:15:52,250 วัตถุที่เพิ่งตัดที่ค่าหนึ่ง 312 00:15:52,250 --> 00:15:54,760 313 00:15:54,760 --> 00:15:59,036 >> แต่เรายังสามารถจินตนาการสถานการณ์ where-- เราสามารถคิดสถานการณ์ใน C 314 00:15:59,036 --> 00:16:00,910 ที่เราอยากจะทำ สิ่งที่มี structs, 315 00:16:00,910 --> 00:16:03,285 ยกตัวอย่างเช่นที่ล้อมหลาย ค่าเข้าด้วยกันและทำให้ 316 00:16:03,285 --> 00:16:05,870 เป็นเรื่องง่ายที่จะผ่านสิ่งรอบ ๆ 317 00:16:05,870 --> 00:16:09,270 นั่นคือเมื่อวัตถุใน JavaScript 318 00:16:09,270 --> 00:16:12,340 >> มันเป็นสิ่งสำคัญที่ต้องจำ เมื่อฉันบอกว่าห่อวัตถุ 319 00:16:12,340 --> 00:16:15,330 จำนวนค่าบางอย่างร่วมกัน ฟังก์ชั่นนี้ยังมี 320 00:16:15,330 --> 00:16:21,506 ค่าซึ่งหมายความว่าฟังก์ชั่นที่สามารถ ยังอยู่ภายในของวัตถุ JavaScript 321 00:16:21,506 --> 00:16:26,910 และเหตุผลที่สำคัญ คือว่าในขณะที่เรามักจะ 322 00:16:26,910 --> 00:16:30,290 คิดว่าวิธีการที่เรียกร้อง บนวัตถุที่เป็น 323 00:16:30,290 --> 00:16:35,200 ของคำที่ได้รับความนิยมจากคนอื่น ๆ ภาษาเชิงวัตถุที่เป็นที่นิยม 324 00:16:35,200 --> 00:16:39,330 หนึ่งในความแตกต่างที่นี่คือ ทุกสิ่งที่เป็นวิธีการใน JavaScript 325 00:16:39,330 --> 00:16:47,270 เป็นค่าที่เก็บไว้ภายในของวัตถุ ที่ดำเนินการบางอย่างอาจ action-- 326 00:16:47,270 --> 00:16:51,850 โดยใช้ค่าอื่น ๆ ที่อยู่ภายใน ของวัตถุที่ แต่ไม่จำเป็นต้อง 327 00:16:51,850 --> 00:16:56,930 ดังนั้นคุณสามารถจินตนาการสถานการณ์ที่ผม เดาในนิด ๆ หน่อย ๆ วิธีที่บ้า 328 00:16:56,930 --> 00:17:02,990 ที่คุณเรียกว่าวิธีการอย่างใดอย่างหนึ่ง วัตถุที่วัตถุอื่นเช่น 329 00:17:02,990 --> 00:17:06,010 ดังนั้นจึงเป็นนิด ๆ หน่อย ๆ ขี้ขลาดในทางที่ 330 00:17:06,010 --> 00:17:09,369 >> และคุณยังสามารถเปลี่ยนวิธีการ ที่เกี่ยวข้องกับวัตถุ 331 00:17:09,369 --> 00:17:13,740 โดยการกำหนดวิธีการที่ ฟังก์ชั่นใหม่ที่ยังเป็น 332 00:17:13,740 --> 00:17:18,250 สวยที่แตกต่างจากคนอื่น ๆ ภาษาเชิงวัตถุที่ 333 00:17:18,250 --> 00:17:21,410 เมื่อเราประกาศวัตถุ และยกตัวอย่างมัน 334 00:17:21,410 --> 00:17:25,839 เราไม่สามารถเปลี่ยนวิธีการที่มี เกี่ยวข้องกับวัตถุนั้นอีกต่อไป 335 00:17:25,839 --> 00:17:28,680 เพื่อให้เป็นที่แตกต่างกันสวย 336 00:17:28,680 --> 00:17:29,570 เย็น. 337 00:17:29,570 --> 00:17:34,010 >> ดังนั้นนี่คือตัวอย่างแรก ของวัตถุในการดำเนินการ 338 00:17:34,010 --> 00:17:36,390 นี่คือสิ่งที่เรียกว่า วัตถุทั่วไปซึ่ง 339 00:17:36,390 --> 00:17:39,460 หมายความว่ามันไม่ได้มี ชื่อโดยเฉพาะอย่างยิ่งไม่ได้เรียน 340 00:17:39,460 --> 00:17:42,190 มันเป็นเพียงแค่การตัดบางส่วนของค่า 341 00:17:42,190 --> 00:17:49,790 และวิธีการที่มีลักษณะเป็นเรามี คู่นี้ด้านนอกของหยิกวงเล็บที่นี่ 342 00:17:49,790 --> 00:17:57,950 ที่บ่งบอกถึงการ JavaScript และกล่าวว่านี้เป็นวัตถุ 343 00:17:57,950 --> 00:18:02,130 ค่าภายในของมัน เป็นค่าแต่ละภายใน 344 00:18:02,130 --> 00:18:04,590 ของวัตถุที่ควร จะห่อด้วยกัน 345 00:18:04,590 --> 00:18:09,180 และภายในของวัตถุนั้น จากนั้นเราจะมีคู่ค่าที่สำคัญ 346 00:18:09,180 --> 00:18:13,880 ที่สำคัญหมายถึงชื่อ ของมูลค่าภายในของวัตถุ 347 00:18:13,880 --> 00:18:16,790 และ side-- อื่น ๆ ตรงข้ามลำไส้ใหญ่ here-- 348 00:18:16,790 --> 00:18:19,850 เป็นค่าที่เกิดขึ้นจริง ที่ควรจะเก็บไว้ 349 00:18:19,850 --> 00:18:26,210 >> ดังนั้นคุณจะเห็นว่าที่นี่เรามี ที่สำคัญที่เรียกว่า fn มีมูลค่า sam, 350 00:18:26,210 --> 00:18:29,430 ตามด้วยเครื่องหมายจุลภาค บอกไปยังรายการถัดไป 351 00:18:29,430 --> 00:18:33,560 แล้วที่สำคัญที่เรียกว่า LN, ด้วยค่าของสีเขียว 352 00:18:33,560 --> 00:18:35,840 ตามด้วยเครื่องหมายจุลภาค ตามมาด้วย "พิมพ์" 353 00:18:35,840 --> 00:18:43,209 ซึ่งจะมีค่าฟังก์ชั่น ที่จะไปทำบรรทัดของรหัสนี้ 354 00:18:43,209 --> 00:18:45,500 ลองย้อนกลับไปและ แกะสิ่งที่เกิดขึ้นที่นี่ 355 00:18:45,500 --> 00:18:47,280 ดังนั้นนี่คือนิด ๆ หน่อย ๆ ที่ซับซ้อน และเราได้เห็นอะไรใหม่ ๆ 356 00:18:47,280 --> 00:18:48,071 สำหรับครั้งแรก. 357 00:18:48,071 --> 00:18:51,190 358 00:18:51,190 --> 00:18:55,065 ว่า "คำนี้" เป็นสิ่งใหม่ เราเห็นนี่และสิ่งนี้จะ 359 00:18:55,065 --> 00:19:00,540 คือหมายถึงปัจจุบัน วัตถุที่อยู่ในขอบเขตที่เหมาะสม? 360 00:19:00,540 --> 00:19:03,990 ดังนั้นเมื่อเรากล่าวนี้ ชี้ให้ตลอดทางกลับ 361 00:19:03,990 --> 00:19:08,140 นี้ object-- ทั้งหมด เมื่อเราทำ this.fn, 362 00:19:08,140 --> 00:19:11,990 เรากำลังจะไปตลอดทางกลับ วัตถุนี้ไปที่ค่าศุกร์ 363 00:19:11,990 --> 00:19:16,471 และได้รับ sam ดึงมันไปตลอดทาง กลับมาติดไว้ที่นี่แล้วไป 364 00:19:16,471 --> 00:19:19,838 >> ผู้ชม: ดังนั้นด้วยการดึงเป็น ที่ทำเพราะของพารามิเตอร์ 365 00:19:19,838 --> 00:19:20,621 ความหมาย? 366 00:19:20,621 --> 00:19:23,870 SAM GREEN: ดังนั้นคำถามก็คือ ดึงทำเพราะของพารามิเตอร์ 367 00:19:23,870 --> 00:19:24,727 ความหมาย? 368 00:19:24,727 --> 00:19:25,435 ใช่อย่างแน่นอน 369 00:19:25,435 --> 00:19:29,660 370 00:19:29,660 --> 00:19:32,470 ที่จะเกิดขึ้นที่นี่มีอะไร จุดนี้กล่าวกับ JavaScript, 371 00:19:32,470 --> 00:19:39,990 ตกลงฉันได้รับค่าบางอย่าง จากวัตถ​​ุจากตัวเองนี้ 372 00:19:39,990 --> 00:19:46,375 และจากนั้นก็จะมองหารายการ เรียกศุกร์และหากพบมัน 373 00:19:46,375 --> 00:19:48,470 มันจะกลับมาที่ value-- ดังนั้นก็ sam 374 00:19:48,470 --> 00:19:51,540 แต่ฉันยังสามารถพิมพ์ บางสิ่งบางอย่างที่ไม่ได้กำหนดไว้ที่นี่ 375 00:19:51,540 --> 00:19:54,090 แล้วมันจะเป็นเพียง กลับ undefined-- ที่ 376 00:19:54,090 --> 00:19:58,250 เป็นสิ่งที่จาวาสคริปต์ที่สามารถ ทำซึ่งจะมีผลประโยชน์ 377 00:19:58,250 --> 00:20:03,190 แต่ก็ also-- ถ้าคุณทำผิดพลาดที่ มันสามารถทำให้เกิดข้อผิดพลาดที่แปลก 378 00:20:03,190 --> 00:20:05,617 ดังนั้นมันก็จะพยายามที่จะหา สิ่งที่คุณบอกว่าจะหา 379 00:20:05,617 --> 00:20:07,700 และก็ไม่ได้ไป บ่นถ้าไม่ได้พบว่ามัน 380 00:20:07,700 --> 00:20:11,390 มันก็จะบอกว่าฉันไม่ได้ พบมันแล้วไป 381 00:20:11,390 --> 00:20:17,581 ดังนั้นมันจะไม่ได้กำหนด, บวกว่างเปล่าบวกนามสกุล 382 00:20:17,581 --> 00:20:18,080 ใช่. 383 00:20:18,080 --> 00:20:21,070 และจากนั้นเราจะเห็นว่าถ้าเรา ก็จะลงไปและ access-- 384 00:20:21,070 --> 00:20:25,450 และเราเรียก tf.print () ที่มีวงเล็บ 385 00:20:25,450 --> 00:20:30,000 มันจะเรียกว่าพิมพ์ ฟังก์ชั่นที่มีการขัดแย้งไม่มีใช่มั้ย? 386 00:20:30,000 --> 00:20:34,490 แต่ถ้าเราเพียงแค่กล่าวว่า tf.print () อัฒภาคโดยไม่ต้องวงเล็บ, 387 00:20:34,490 --> 00:20:37,480 สิ่งที่จะต้องทำคือดึง ฟังก์ชั่นออกมาจากมูลค่าที่ 388 00:20:37,480 --> 00:20:40,609 แต่ไม่ได้เรียกว่ามันจริง 389 00:20:40,609 --> 00:20:41,162 เย็น. 390 00:20:41,162 --> 00:20:42,870 HUGH Zabriskie: ควร เราจะทำให้วัตถุ? 391 00:20:42,870 --> 00:20:44,161 SAM GREEN: แน่นอนว่าเรามาทำอย่างนั้น 392 00:20:44,161 --> 00:20:48,750 ดังนั้นผมจึงสามารถย้ายนี้ เช่นคอนโซล 393 00:20:48,750 --> 00:20:51,380 394 00:20:51,380 --> 00:20:55,466 เราสามารถจินตนาการได้ว่าผมมีวัตถุ 395 00:20:55,466 --> 00:21:03,026 396 00:21:03,026 --> 00:21:04,150 ดังนั้นนี่คือวัตถุที่เรียบง่าย 397 00:21:04,150 --> 00:21:06,910 398 00:21:06,910 --> 00:21:11,050 นี้เป็นวัตถุที่มีสอง ค่ากับสองปุ่มสองค่าคีย์ 399 00:21:11,050 --> 00:21:12,710 คู่ 400 00:21:12,710 --> 00:21:21,850 ดังนั้นผมก็จะสามารถเข้าถึงค่าที่เก็บไว้ ภายในของวัตถุนี้โดยการทำ x.x1, 401 00:21:21,850 --> 00:21:23,400 ตัวอย่างเช่นและฉันได้รับที่ 1 กลับไป 402 00:21:23,400 --> 00:21:29,590 ในทำนองเดียวกัน x.x2 รับค่าที่กลับมา 403 00:21:29,590 --> 00:21:33,330 >> และตอนนี้สิ่งที่เจ๋งจริงๆคือผมสามารถ จริงเพิ่มสิ่งที่วัตถุนี้ 404 00:21:33,330 --> 00:21:34,316 หลังจากที่ผมได้สร้างมันขึ้นมา 405 00:21:34,316 --> 00:21:36,315 ดังนั้นคุณสามารถจินตนาการขอ ว่าฉันมีฟังก์ชั่น 406 00:21:36,315 --> 00:21:44,430 407 00:21:44,430 --> 00:21:46,352 >> HUGH Zabriskie: คุณ ต้องทำ Shift-Enter 408 00:21:46,352 --> 00:21:47,643 >> SAM GREEN: โอ้ที่น่ารำคาญ 409 00:21:47,643 --> 00:22:02,460 410 00:22:02,460 --> 00:22:04,324 อะไรที่มันไม่ชอบ? 411 00:22:04,324 --> 00:22:04,824 โอ้ 412 00:22:04,824 --> 00:22:07,532 413 00:22:07,532 --> 00:22:08,691 ไปเลย. 414 00:22:08,691 --> 00:22:09,190 เย็น. 415 00:22:09,190 --> 00:22:12,840 >> ดังนั้นผมจึงได้สร้างขึ้น ฟังก์ชั่นนี้ฉนั้น 416 00:22:12,840 --> 00:22:17,590 เป็นไปที่จะไปในปัจจุบัน วัตถุและพิมพ์ this.x1 417 00:22:17,590 --> 00:22:20,330 ดังนั้นถ้าฉันเพียงโทรฉโดย ตัวเองไม่มีอะไรที่เกิดขึ้น 418 00:22:20,330 --> 00:22:26,970 จะเกิดขึ้นที่เหมาะสมเพราะมี x1 ไม่มี สนามในวัตถุมันหมายถึง 419 00:22:26,970 --> 00:22:39,710 แต่ถ้าผมพูด x.f = ฉแล้วฉัน เรียก x.f () ฉันจะได้รับกลับมา 1 420 00:22:39,710 --> 00:22:42,990 421 00:22:42,990 --> 00:22:46,530 ฟังก์ชั่นฉนั่นคือตอนนี้ เกี่ยวข้องกับวัตถุ x, 422 00:22:46,530 --> 00:22:51,800 ซึ่งมีที่สำคัญที่เรียกว่า x1 ที่เกี่ยวข้องกับค่าที่ 1, 423 00:22:51,800 --> 00:22:54,570 ดังนั้นเมื่อเราเรียก this.x1 ก็ จะพบสิ่งที่กำลังมองหา 424 00:22:54,570 --> 00:22:56,450 และสามารถที่จะพิมพ์ค่าออกมา 425 00:22:56,450 --> 00:22:58,700 เพื่อให้เป็นเพียงตัวอย่างหนึ่ง ชนิดของสิ่งที่บ้า 426 00:22:58,700 --> 00:23:01,190 คุณสามารถทำกับวัตถุใน JavaScript 427 00:23:01,190 --> 00:23:03,870 428 00:23:03,870 --> 00:23:07,560 >> ดังนั้นรุ่นที่เป็น รุ่นทั่วไปหมาย 429 00:23:07,560 --> 00:23:13,780 ที่เราได้สร้างขึ้นโดยใช้วัตถุนี้ วงเล็บสัญกรณ์รั้ง notation--, 430 00:23:13,780 --> 00:23:16,880 rather-- และที่ มีประโยชน์ถ้าเราเพียงแค่ต้องการ 431 00:23:16,880 --> 00:23:21,440 หนึ่งในตัวอย่างของวัตถุโดยเฉพาะอย่างยิ่ง แต่ สิ่งที่ถ้าเราต้องการที่จะมีมากกว่าหนึ่ง 432 00:23:21,440 --> 00:23:22,210 ของชนิดเดียวกันได้หรือไม่ 433 00:23:22,210 --> 00:23:24,440 และคำตอบที่ว่า คำถามคือมีสิ่งที่ 434 00:23:24,440 --> 00:23:26,760 ที่เรียกว่าการเรียนใน JavaScript ได้เป็นอย่างดี 435 00:23:26,760 --> 00:23:31,470 436 00:23:31,470 --> 00:23:36,420 เราสามารถสร้างฟังก์ชั่นที่ ไม่เรียงลำดับของการเริ่มต้นบางอย่าง 437 00:23:36,420 --> 00:23:41,690 สำหรับวัตถุต่างประเทศ และเราจะบอกว่าเหมือน 438 00:23:41,690 --> 00:23:44,550 class-- ของฉันดังนั้นชื่อ ของ object-- นำมาใช้ใหม่ 439 00:23:44,550 --> 00:23:47,100 เท่ากับฟังก์ชั่นที่กำหนดขึ้น 440 00:23:47,100 --> 00:23:52,280 ดังนั้นสิ่งนี้จะเทียบเท่า ที่จะมีการสร้างวัตถุที่ 441 00:23:52,280 --> 00:23:55,930 จะเป็นเพียงต้องการ วงเล็บปีกกา, STR ลำไส้ใหญ่ 442 00:23:55,930 --> 00:23:59,630 นี้เป็นสตริง อัฒภาครั้งหยิก 443 00:23:59,630 --> 00:24:01,880 ที่จะเป็นทั่วไป วัตถุที่เราเริ่มต้น, 444 00:24:01,880 --> 00:24:06,380 กับหนึ่งความแตกต่างการที่ สายต่อไปที่เราสร้างต้นแบบที่ 445 00:24:06,380 --> 00:24:11,190 หมายความว่ามันเริ่มต้นที่สำคัญที่ เราเพิ่มไปยังวัตถุของเราที่ 446 00:24:11,190 --> 00:24:13,970 มีค่าอยู่ที่นี่ 447 00:24:13,970 --> 00:24:20,570 หมายความว่าเมื่อฉันจะสร้างใหม่ ตัวอย่างของวัตถุ MyClass นี้ 448 00:24:20,570 --> 00:24:27,440 ก็จะได้สร้างขึ้นก่อนภายในของ ค่าที่เรียกว่าเอสทีและความคุ้มค่าอีก 449 00:24:27,440 --> 00:24:32,418 เรียกว่า myPrint ซึ่งเป็น จะเป็นฟังก์ชั่น 450 00:24:32,418 --> 00:24:32,918 ที่น่ากลัว 451 00:24:32,918 --> 00:24:37,410 452 00:24:37,410 --> 00:24:37,990 >> ที่ดี 453 00:24:37,990 --> 00:24:40,710 ดังนั้นสิ่งสุดท้ายที่จะ พูดเกี่ยวกับ JavaScript 454 00:24:40,710 --> 00:24:46,430 คือว่ามันมีประโยชน์จริงๆสำหรับสิ่งที่ จะเรียกว่าการดำเนินงานที่ไม่ตรงกัน 455 00:24:46,430 --> 00:24:52,500 หมายถึงการไม่ตรงกันคือการที่เรา สามารถรอสำหรับการดำเนินการบางอย่าง 456 00:24:52,500 --> 00:24:57,870 ให้เสร็จสมบูรณ์ก่อนที่เราจะไป แต่ย้ายไปในขณะที่เรารอ 457 00:24:57,870 --> 00:24:59,690 แล้วมีบางสิ่งบางอย่างเกิดขึ้นในภายหลัง 458 00:24:59,690 --> 00:25:03,480 และสิ่งที่ฉันหมายความโดยที่คุณ สามารถจินตนาการสถานการณ์ที่ 459 00:25:03,480 --> 00:25:06,850 คุณส่งการร้องขอไปยัง บางเว็บเซิร์ฟเวอร์ที่ใดที่หนึ่ง 460 00:25:06,850 --> 00:25:09,670 และมันจะส่งคุณกลับ บางก้อนใหญ่ของข้อมูลใช่มั้ย? 461 00:25:09,670 --> 00:25:13,320 และผู้ใช้ของคุณสามารถรอใน ขณะเดียวกันการที่จะเกิดขึ้น 462 00:25:13,320 --> 00:25:15,200 และไม่มีอะไรที่จะเป็น ที่เกิดขึ้นในช่วงเวลานั้น 463 00:25:15,200 --> 00:25:18,110 แต่นั่นไม่ใช่การออกแบบที่ดีใช่มั้ย? 464 00:25:18,110 --> 00:25:20,214 คุณไม่ต้องการหน้าเว็บที่จะแช่แข็ง 465 00:25:20,214 --> 00:25:22,380 เกิดอะไรขึ้นถ้าผู้ใช้ต้องการ คลิกที่เมนูแบบเลื่อนลงหรือไม่? 466 00:25:22,380 --> 00:25:24,870 มันไม่ได้เป็นรูปแบบการออกแบบที่ดี 467 00:25:24,870 --> 00:25:29,290 แต่โดยทั่วไปสิ่งที่ จาวาสคริปต์ไม่ได้รับการกล่าวว่า 468 00:25:29,290 --> 00:25:31,870 ตกลงทำดำเนินการนี​​้ถ่ายทอดสด 469 00:25:31,870 --> 00:25:36,520 ดังนั้นเหมือนรออยู่ในพื้นหลัง และจากนั้นเมื่อการดำเนินการเสร็จแล้ว 470 00:25:36,520 --> 00:25:39,420 โทรเรียกกลับ function-- เรียกใช้ฟังก์ชันบางอย่าง 471 00:25:39,420 --> 00:25:43,800 ไม่บาง action-- เพื่อส่งสัญญาณว่า การดำเนินงานของเรากำลังรอที่จะจบ 472 00:25:43,800 --> 00:25:45,520 จบลงแล้ว. 473 00:25:45,520 --> 00:25:51,240 และเหตุผลที่มีประสิทธิภาพสุดคือ เราสามารถทำบางสิ่งบางอย่างผ่านอาร์กิวเมนต์ 474 00:25:51,240 --> 00:25:54,440 ทำอะไรสักอย่างแล้วรอ สิ่งที่เกิดขึ้น 475 00:25:54,440 --> 00:25:58,970 จากนั้นเมื่อสิ่งที่ เสร็จเราสามารถเรียกโทรกลับ 476 00:25:58,970 --> 00:26:03,300 นั่นเป็นประโยชน์จริงๆเพราะมันช่วยให้ เราทำสิ่งที่มีเว็บ Audio API, 477 00:26:03,300 --> 00:26:07,490 ตัวอย่างเช่นการโหลด ไฟล์เสียงจากเซิร์ฟเวอร์ระยะไกล 478 00:26:07,490 --> 00:26:11,660 โดยไม่ต้องรอให้ ไฟล์เสียงทั้งหมดจะได้รับการโหลด 479 00:26:11,660 --> 00:26:14,440 ซึ่งจะเป็นจริงๆ ที่ไม่ดีสำหรับประสบการณ์การใช้งาน 480 00:26:14,440 --> 00:26:17,080 เย็น. 481 00:26:17,080 --> 00:26:19,460 >> คู่สุดท้ายข้อสังเกตเกี่ยวกับ การแก้จุดบกพร่องตั้งแต่นี้ 482 00:26:19,460 --> 00:26:23,682 เป็นสิ่งที่คุณจะต้องทำ เป็นส่วนหนึ่งของโครงการของคุณรับประกัน 483 00:26:23,682 --> 00:26:25,140 ที่ผมกล่าวถึงคอนโซล JavaScript 484 00:26:25,140 --> 00:26:27,550 มันเป็นคุณสมบัติที่มีประโยชน์สุด เบราว์เซอร์ที่ทันสมัย 485 00:26:27,550 --> 00:26:30,300 และเราจริงๆแนะนำให้คุณที่จะได้รับ สะดวกสบายใช้คอนโซลของคุณ 486 00:26:30,300 --> 00:26:33,660 ถ้าคุณต้องการที่จะได้รับสิ่งที่ดีที่จาวาสคริปต์ 487 00:26:33,660 --> 00:26:36,320 มันเป็นเรื่องที่มีประโยชน์สำหรับซุปเปอร์ การแก้จุดบกพร่อง แต่ก็ยัง 488 00:26:36,320 --> 00:26:39,440 มีประโยชน์มากสำหรับการหา วิธีการใช้ API 489 00:26:39,440 --> 00:26:41,950 จะช่วยให้การจริงๆ การทดลองง่าย 490 00:26:41,950 --> 00:26:45,910 โดยไม่ต้องพิมพ์บาง รหัสแล้วรวบรวมมัน 491 00:26:45,910 --> 00:26:47,500 คุณไม่ต้องทำตามขั้นตอนเหล่านั้นทั้งหมด 492 00:26:47,500 --> 00:26:49,619 คุณก็สามารถเขียน รหัสบางอย่างในสาย 493 00:26:49,619 --> 00:26:52,410 แล้วได้รับการตอบรับทันที หรือไม่บรรทัดของรหัสที่ 494 00:26:52,410 --> 00:26:55,230 worked-- ที่มีประโยชน์มาก 495 00:26:55,230 --> 00:26:59,760 >> และยังเป็นเพียงหนึ่ง note-- ทางเทคนิค คอนโซล JavaScript เป็นตัวอย่าง 496 00:26:59,760 --> 00:27:05,680 ของ REPL-- เพื่อให้เป็น R-E-P-L, REPL, ซึ่งหมายถึงการอ่านประเมินผล 497 00:27:05,680 --> 00:27:06,180 วนรอบที่พิมพ์ 498 00:27:06,180 --> 00:27:09,100 499 00:27:09,100 --> 00:27:12,120 คุณกำลังจะพิมพ์สิ่งบางอย่าง ในก็จะอ่านสิ่งที่คุณพิมพ์ใน 500 00:27:12,120 --> 00:27:17,280 มันจะประเมินมันและมันจะพิมพ์ การส่งออกและจากนั้นก็จะเริ่มต้นอีกครั้ง 501 00:27:17,280 --> 00:27:22,056 ที่ช่วยให้คุณได้อย่างรวดเร็วไปใน วงการวนซึ่งเป็นเย็นจริงๆ 502 00:27:22,056 --> 00:27:25,150 503 00:27:25,150 --> 00:27:28,930 >> ผมคิดว่าที่ผ่านมาจริง note-- นี้ เป็นบันทึกล่าสุดที่เกิดขึ้นจริงใช่ 504 00:27:28,930 --> 00:27:30,780 เราทำจริงใช้ JavaScript ได้อย่างไร 505 00:27:30,780 --> 00:27:34,040 ครั้งแรกดังนั้นเราสามารถนำเข้า โดยใช้แท็กสคริปต์ 506 00:27:34,040 --> 00:27:39,500 ที่ด้านบนหรือด้านล่างของ HTM​​L มี file-- ที่ใดก็ได้ภายในของไฟล์ HTML, 507 00:27:39,500 --> 00:27:40,440 จริงๆ. 508 00:27:40,440 --> 00:27:47,390 และภายในแท็กสคริปต์ที่มี สองวิธีย่อยของการนำเข้า JavaScript 509 00:27:47,390 --> 00:27:51,370 ที่แรกก็คือโดยมี ไฟล์จาวาสคริปต์ที่แยกต่างหาก 510 00:27:51,370 --> 00:27:58,010 ที่เรานำเข้าอย่างครบถ้วนหรือ โดยมีพื้นที่รหัสเช่นสคริปต์ 511 00:27:58,010 --> 00:28:00,290 ที่จะเริ่มต้นแล้ว สคริปต์เครื่องหมายถึงจุดสิ้นสุด 512 00:28:00,290 --> 00:28:02,620 แล้วเราเพียงแค่เขียน JavaScript ภายในไฟล์ HTML 513 00:28:02,620 --> 00:28:03,790 เหล่านี้เป็นสองวิธี 514 00:28:03,790 --> 00:28:05,165 คุณไม่สามารถมีได้ภายในของ HTM​​L 515 00:28:05,165 --> 00:28:06,502 516 00:28:06,502 --> 00:28:08,126 ผู้ชม: เป็นหนึ่งในดีกว่าที่อื่นหรือไม่ 517 00:28:08,126 --> 00:28:10,542 SAM GREEN: คำถามคือ เป็นหนึ่งในที่ดีขึ้นกว่าที่อื่น ๆ 518 00:28:10,542 --> 00:28:18,306 ดังนั้นใช่เป็นวิธีที่รูปแบบการเข้ารหัส และมันก็เหมือนการปฏิบัติการออกแบบ 519 00:28:18,306 --> 00:28:20,180 มีสองเหตุผลคือ ทำไมมันอาจจะดีกว่า 520 00:28:20,180 --> 00:28:23,934 ที่แรกก็คือมันทำให้รหัสของคุณ จำนวนมากที่สามารถอ่านได้มากขึ้นถ้าทั้งหมดของ HTM​​L ของคุณ 521 00:28:23,934 --> 00:28:27,100 อยู่ในสถานที่หนึ่งทุก CSS ของคุณอยู่ใน สถานที่อื่นทั้งหมดของ JavaScript ของคุณ 522 00:28:27,100 --> 00:28:28,420 อยู่ในสถานที่ที่สาม 523 00:28:28,420 --> 00:28:28,920 ขวา? 524 00:28:28,920 --> 00:28:32,370 ผมคิดว่าเราควรจะได้พูดคุยกันแล้ว เกี่ยวกับเรื่องนี้ใน sections-- CSS-- สิ่งที่ชอบ 525 00:28:32,370 --> 00:28:35,220 ที่ is-- และมันจะไป มักจะอยู่ในแฟ้มอื่น 526 00:28:35,220 --> 00:28:37,090 ดังนั้นชนิดที่คล้ายกันของแนวคิดที่นี่ 527 00:28:37,090 --> 00:28:42,410 นอกจากนี้คุณยังสามารถจินตนาการว่า JavaScript จะนำกลับมาใช้มากกว่าหนึ่ง 528 00:28:42,410 --> 00:28:47,350 เพจ HTML หรือบางทีอาจจะเป็น หน้าเว็บ HTML หลายที่ดี 529 00:28:47,350 --> 00:28:49,340 และมีที่ JavaScript refactored เป็นหนึ่ง 530 00:28:49,340 --> 00:28:51,950 ไฟล์ที่คุณสามารถนำเข้า เป็นมากกว่าสถานที่แห่งหนึ่ง 531 00:28:51,950 --> 00:28:54,570 ช่วยให้รหัสที่จะ วิธีการบำรุงรักษามากขึ้น 532 00:28:54,570 --> 00:28:57,930 คุณสามารถจินตนาการการทำอย่างใดอย่างหนึ่ง เปลี่ยนเป็น JavaScript 533 00:28:57,930 --> 00:29:00,070 และมีการเปลี่ยน ใน 100 ไฟล์ที่แตกต่างกัน 534 00:29:00,070 --> 00:29:04,070 และแทนที่จะเราก็สามารถเปลี่ยนได้ ในหนึ่งซึ่งเป็นวิธีที่มีประสิทธิภาพมากขึ้น 535 00:29:04,070 --> 00:29:05,420 ผมตอบคำถามของคุณ? 536 00:29:05,420 --> 00:29:07,950 เย็น. 537 00:29:07,950 --> 00:29:10,830 >> นอกจากนี้เรายังสามารถพิมพ์ลงในคอนโซล ที่เราได้กล่าวมาก่อน 538 00:29:10,830 --> 00:29:15,070 และอีกครั้งหนึ่งที่ผ่านมา note-- เสียงเว็บที่ถูกสร้างขึ้นใน 539 00:29:15,070 --> 00:29:16,978 คุณไม่จำเป็นต้องโหลดอะไร 540 00:29:16,978 --> 00:29:17,478 เย็น. 541 00:29:17,478 --> 00:29:20,519 มีคำถามใด ๆ ที่คุณมี คำถามใด ๆ เพิ่มเติมเกี่ยวกับ JavaScript, 542 00:29:20,519 --> 00:29:21,930 ก่อนที่เราจะเดินหน้าต่อไป? 543 00:29:21,930 --> 00:29:24,286 >> ผู้ชม: [ไม่ได้ยิน] 544 00:29:24,286 --> 00:29:25,410 SAM GREEN: สิทธิทั้งหมดเย็น 545 00:29:25,410 --> 00:29:27,200 ดังนั้นตอนนี้เขาจะพูดคุยเกี่ยวกับเอพีไอ 546 00:29:27,200 --> 00:29:28,490 >> HUGH Zabriskie: เย็น 547 00:29:28,490 --> 00:29:28,990 ขอบคุณแซม 548 00:29:28,990 --> 00:29:30,184 >> SAM GREEN: Sure 549 00:29:30,184 --> 00:29:32,600 HUGH Zabriskie: น่ากลัวดังนั้น เราจะย้ายไปจาก JavaScript 550 00:29:32,600 --> 00:29:35,350 ดังนั้นเราจึงได้พูดคุยเกี่ยวกับบางส่วนของ สาระสำคัญของ JavaScript ที่ 551 00:29:35,350 --> 00:29:41,105 และผู้ที่มีตัวแปรที่ฟังก์ชั่น วัตถุที่ทำหน้าที่เป็นตัวแปร 552 00:29:41,105 --> 00:29:41,980 โหลดไม่ตรงกัน 553 00:29:41,980 --> 00:29:46,100 เหล่านี้เป็นสิ่งทั้งหมดที่คุณจะ เห็นว่าคุณใช้เว็บเสียง 554 00:29:46,100 --> 00:29:49,230 ดังนั้นเรากำลังจะพูดคุย เกี่ยวกับเรื่องนี้เป็นครั้งแรกในระดับสูง 555 00:29:49,230 --> 00:29:52,120 >> มันเป็น API จึงเป็นสิ่งที่ ที่สร้างขึ้นในขณะที่แซมกล่าวว่า 556 00:29:52,120 --> 00:29:57,010 ลงใน JavaScript ที่คุณใช้ในคอนโซล 557 00:29:57,010 --> 00:30:01,020 และมันก็เป็นจริงเช่นเดียวกับรหัส c ++ ที่สร้างขึ้นจริงๆเป็นโครเมี่ยม 558 00:30:01,020 --> 00:30:04,470 และ Firefox และทั้งหมดของเบราว์เซอร์เหล่านี้ 559 00:30:04,470 --> 00:30:07,060 ดังนั้นความคิดหลักกับ Web เสียงคือการที่คุณมี 560 00:30:07,060 --> 00:30:09,440 ชนิดของท่อเสียงนี้ใช่มั้ย? 561 00:30:09,440 --> 00:30:13,670 ดังนั้นข้อมูลเสียงของคุณ มาในในบางรูปแบบ 562 00:30:13,670 --> 00:30:16,690 >> มีสามชนิดของ forms-- หลัก คุณมี oscillator, ที่ 563 00:30:16,690 --> 00:30:21,340 สร้างคลื่นไซน์คลื่นโคไซน์ เรากำลังจะไปดูว่าที่ทำงาน 564 00:30:21,340 --> 00:30:23,890 อีกคนหนึ่งที่พบบ่อยมาก ของหลักสูตรคือ MP3 565 00:30:23,890 --> 00:30:25,810 ดังนั้นบางทีคุณอาจจะเริ่มต้นด้วย เพลงและจากนั้นคุณ 566 00:30:25,810 --> 00:30:28,320 ต้องการที่จะทำบางกรอง ที่เอาท์พุท 567 00:30:28,320 --> 00:30:30,605 that-- ที่อาจจะเป็นแหล่งที่เป็นไปได้ 568 00:30:30,605 --> 00:30:32,480 แล้วเย็นจริงๆ หนึ่งคือไมโครโฟน 569 00:30:32,480 --> 00:30:37,230 ดังนั้นคุณจึงสามารถใช้บางมาก โทรพื้นฐานใน JavaScript 570 00:30:37,230 --> 00:30:39,440 ที่จะได้รับการเข้าถึง ไมโครโฟน, และอื่น ๆ ถ้าคุณ 571 00:30:39,440 --> 00:30:42,870 ต้องการที่จะทำให้การตรวจสอบ เช่นเครื่องตรวจจับสนาม, 572 00:30:42,870 --> 00:30:45,290 ยกตัวอย่างเช่นที่เกิดใน เสียงและตัวเลขของคุณออก 573 00:30:45,290 --> 00:30:47,740 pitch-- วิธีที่ง่ายมากที่ 574 00:30:47,740 --> 00:30:50,730 คุณสามารถเพียงแค่ชนิดของอ่านมัน ในการคิดออกความถี่ 575 00:30:50,730 --> 00:30:52,250 แล้วออกจำนวน 576 00:30:52,250 --> 00:30:56,080 ดังนั้นเราจะเห็นว่าที่ทำงานได้เป็นอย่างดี 577 00:30:56,080 --> 00:30:59,430 >> ปลายทางคือโดยทั่วไป ที่ข้อมูลเสียงเอาท์พุท 578 00:30:59,430 --> 00:31:02,890 ดังนั้นโดยทั่วไปว่าเป็นเหมือน ลำโพงแล็ปท็อป 579 00:31:02,890 --> 00:31:05,610 ตัวเลือกอื่น ๆ เป็นเหมือน ScriptProcessorNode-- 580 00:31:05,610 --> 00:31:07,990 เราจะให้โหนดใน second-- แต่โดยทั่วไป 581 00:31:07,990 --> 00:31:11,939 ทั้งที่คุณกำลังวางเสียงออก ผ่านเครื่องคอมพิวเตอร์ของคุณผ่านทางลำโพง 582 00:31:11,939 --> 00:31:14,730 หรือคุณชนิดของการบันทึกมันดังนั้น คุณเก็บเป็นข้อมูลเสียง 583 00:31:14,730 --> 00:31:18,980 ดังนั้นบางทีถ้ามีคนสร้าง เพลงใน app ของคุณแล้ว 584 00:31:18,980 --> 00:31:22,410 คุณต้องการที่จะบันทึกว่าและอาจจะชอบ ส่งออกไปยัง SoundCloud สำหรับ example-- 585 00:31:22,410 --> 00:31:25,281 ที่จะเป็นวิธีหนึ่งที่จะทำเช่นนั้น 586 00:31:25,281 --> 00:31:27,030 ทุกสิ่งที่สนุก ซึ่งเราจะพูดคุยเกี่ยวกับ 587 00:31:27,030 --> 00:31:29,950 ที่เกิดขึ้นระหว่างทั้งสองจุด ที่เราโหลดในเพลง 588 00:31:29,950 --> 00:31:31,410 แล้วออกมัน 589 00:31:31,410 --> 00:31:36,660 >> ดังนั้นฉันจะพูดคุยเกี่ยวกับห้า ขั้นตอนของการผลิตเสียงในครั้งที่สอง 590 00:31:36,660 --> 00:31:38,950 เรามีสิ่งที่เรียกว่า AudioContext ซึ่ง 591 00:31:38,950 --> 00:31:41,580 คือกระดาษห่อเล็ก ๆ น้อย ๆ ที่เราเห็นที่นี่ 592 00:31:41,580 --> 00:31:49,980 โดยทั่วไปสิ่งที่ AudioContext is-- ถ้าเรา ไปที่คอนโซล JavaScript ในขณะนี้ 593 00:31:49,980 --> 00:31:52,740 เราสามารถสร้างหนึ่งในขณะนี้ 594 00:31:52,740 --> 00:31:54,040 เพียงตัวอย่างของ REPL ขวาแล้ว? 595 00:31:54,040 --> 00:31:57,880 เรากำลังอ่าน ประเมินผลและการพิมพ์ 596 00:31:57,880 --> 00:32:00,260 >> AudioContext เป็นรัฐทั่วโลก 597 00:32:00,260 --> 00:32:05,500 มัน struct ก็วัตถุ ที่นี่และจะเก็บข้อมูล 598 00:32:05,500 --> 00:32:09,960 เกี่ยวกับสิ่งที่เกิดขึ้น บนหน้าจอที่เกี่ยวข้องกับเสียง 599 00:32:09,960 --> 00:32:15,220 ตัวอย่างหนึ่งคือเวลาปัจจุบัน 600 00:32:15,220 --> 00:32:18,910 นี้จะบอกคุณจำนวน วินาทีอย่างแม่นยำ 601 00:32:18,910 --> 00:32:20,890 ตั้งแต่หน้าเว็บที่โหลด 602 00:32:20,890 --> 00:32:24,110 ดังนั้นนี้เป็นประโยชน์จริงๆ สถานที่เล็ก ๆ น้อย ๆ ที่คุณสามารถใช้ 603 00:32:24,110 --> 00:32:27,898 มันอ่านเท่านั้นหากต้องการดูผมคิดว่าจริง คุณสามารถลองที่จะตั้งค่า 604 00:32:27,898 --> 00:32:29,856 มันจะบอกคุณตั้งมัน แล้วถ้าคุณพิมพ์ 605 00:32:29,856 --> 00:32:31,439 again-- มันไม่ได้ทำงานจริงค่อนข้าง 606 00:32:31,439 --> 00:32:34,472 ดังนั้นมีการอ่านอย่างเดียว คุณสมบัติใน JavaScript 607 00:32:34,472 --> 00:32:36,430 นี้จริงๆเป็นประโยชน์ในกรณีที่ คุณกำลังชนิดของซิงค์ 608 00:32:36,430 --> 00:32:38,610 จำนวนมากที่แตกต่างกัน ข้อมูลเมื่อคุณอยู่ 609 00:32:38,610 --> 00:32:41,280 ชนิดของการเล่นเสียงที่แตกต่าง 610 00:32:41,280 --> 00:32:43,630 >> อีกหนึ่งที่มีประโยชน์จริงๆ เป็นปลายทางบริบท 611 00:32:43,630 --> 00:32:46,587 612 00:32:46,587 --> 00:32:49,670 แน่นอนถ้าคุณสนใจจะ พยายามที่นี้ที่คอนโซลด้านขวาของคุณเอง 613 00:32:49,670 --> 00:32:50,980 ตอนนี้ 614 00:32:50,980 --> 00:32:53,150 ดังนั้นนี่คือ AudioDestinationNode 615 00:32:53,150 --> 00:32:56,480 โดยทั่วไปสิ่งที่กล่าวนี้คือ ที่มีการส่งออกไป? 616 00:32:56,480 --> 00:32:59,590 จึงมีสองตัวเลือกจริงที่นี่ 617 00:32:59,590 --> 00:33:01,940 มักจะเริ่มต้น เป็นเพียงลำโพงของคุณ 618 00:33:01,940 --> 00:33:05,150 ดังนั้น AudioDestinationNode พื้นเพียงกล่าวว่า 619 00:33:05,150 --> 00:33:09,240 มีศูนย์เอาท์พุทเสียงที่มี มาส่งไปยังลำโพง 620 00:33:09,240 --> 00:33:12,050 ดังนั้นโดยทั่วไปคุณทำไม่ได้ ต้องเล่นกับที่ 621 00:33:12,050 --> 00:33:15,720 หากคุณกำลังสนใจในการใช้จริง ScriptProcessorNode สำหรับการบันทึก 622 00:33:15,720 --> 00:33:16,990 แน่นอนยิงฉัน อีเมลต่อมาเนื่องจากว่าเป็น 623 00:33:16,990 --> 00:33:18,330 เล็ก ๆ น้อย ๆ ที่ซับซ้อนมากขึ้น 624 00:33:18,330 --> 00:33:21,590 แต่โดยทั่วไปคุณเพียงแค่ชนิด การแสดงผลของเสียงในบางรูปแบบ 625 00:33:21,590 --> 00:33:24,347 เย็นดังนั้นเราจะกระโดดกลับมาที่นี่ 626 00:33:24,347 --> 00:33:25,180 ผู้ชม: ฉันขอโทษ 627 00:33:25,180 --> 00:33:26,054 HUGH Zabriskie: ใช่ 628 00:33:26,054 --> 00:33:28,770 ผู้ชม: ฉันรู้ว่าคุณกล่าวว่าที่จะพูดคุย กับคุณในภายหลังเกี่ยวกับการบันทึก 629 00:33:28,770 --> 00:33:31,550 คุณสามารถเชื่อมต่อกับเครื่องมือ Pro? 630 00:33:31,550 --> 00:33:33,120 >> HUGH Zabriskie: ด้วยเครื่องมือ Pro? 631 00:33:33,120 --> 00:33:35,260 มาดูกัน. 632 00:33:35,260 --> 00:33:37,220 ฉันไม่คิดอย่างนั้น 633 00:33:37,220 --> 00:33:41,670 ดังนั้นจะระหว่างลูกค้า ซึ่งเป็น JavaScript 634 00:33:41,670 --> 00:33:44,310 คอนโซลและที่แท้จริงของคุณ คอมพิวเตอร์โดยทั่วไป 635 00:33:44,310 --> 00:33:46,490 บางสิ่งบางอย่างที่ชนิด การปิดวงเงินถ้าคุณ 636 00:33:46,490 --> 00:33:52,320 จะชนิดโดยธรรมชาติของ the-- มันเป็นชนิดของสิ่งที่การออกแบบ 637 00:33:52,320 --> 00:33:57,770 แต่คุณพยายามที่จะให้เบราว์เซอร์ที่แยกต่างหาก ที่เกิดขึ้นจริงจากเครื่องคอมพิวเตอร์ของผู้ใช้ 638 00:33:57,770 --> 00:34:02,310 โดยทั่วไปสิ่งเดียวที่คุณจะสามารถ การเข้าถึงเป็นไมโครโฟนหรือกล้อง 639 00:34:02,310 --> 00:34:04,730 คุณไม่สามารถที่จะฉัน ไม่คิดว่าจะใช้เครื่องมือ Pro 640 00:34:04,730 --> 00:34:07,480 แต่ถ้าคุณสร้างขึ้น ติดตามในเครื่องมือ Pro, 641 00:34:07,480 --> 00:34:12,710 การส่งออกที่คุณสามารถโหลดที่ ในที่นี่กรองตัวอย่างเช่น 642 00:34:12,710 --> 00:34:16,820 กระบวนการที่และบันทึกว่าเป็น เสียง Destination-- หรือ no-- ทรงกลม 643 00:34:16,820 --> 00:34:17,870 โหนดประมวลผล 644 00:34:17,870 --> 00:34:20,730 และจากนั้นคุณสามารถทำได้ การส่งออกที่ SoundCloud คุณ 645 00:34:20,730 --> 00:34:25,320 สามารถส่งในอีเมลหรือ สิ่งที่คุณต้องการจากที่นั่น 646 00:34:25,320 --> 00:34:31,159 >> แต่มีชนิดของอุปสรรคเล็กน้อย ระหว่างการทำเพล​​งในเครื่องคอมพิวเตอร์ของคุณ 647 00:34:31,159 --> 00:34:33,050 และทำให้เพลงออนไลน์ 648 00:34:33,050 --> 00:34:37,940 >> SAM GREEN: และนั่นคือ ไม่ซ้ำกับ API นี้ 649 00:34:37,940 --> 00:34:44,060 มันเป็นคุณลักษณะด้านความปลอดภัยของ Chrome และ ผมคิดว่าทุกเบราว์เซอร์ที่ทันสมัย​​อื่น ๆ 650 00:34:44,060 --> 00:34:45,860 เบราว์เซอร์เป็นตัวเองที่มีอยู่ 651 00:34:45,860 --> 00:34:50,980 ดังนั้นตัวอย่างเช่นหน้าเว็บที่ไม่สามารถ ใช้งาน JavaScript เพื่อเปิดเสียง 652 00:34:50,980 --> 00:34:54,190 บนลำโพงของคุณตัวอย่างเช่น 653 00:34:54,190 --> 00:34:58,120 หรือมันไม่สามารถเปิดคอมพิวเตอร์ของคุณออก 654 00:34:58,120 --> 00:35:01,530 และไม่มีจุดกลาง ระหว่างทั้งสองสิ่งที่ถูกต้อง 655 00:35:01,530 --> 00:35:05,960 ดังนั้นทั้งคุณมี นามธรรมที่สมบูรณ์ 656 00:35:05,960 --> 00:35:10,050 หรือคุณเปิดขึ้น ข้อบกพร่องของการให้การรักษาความปลอดภัย 657 00:35:10,050 --> 00:35:14,440 โปรแกรมเมอร์ที่มีความตั้งใจที่ไม่ดีทำ สิ่งที่พวกเขาต้องการกับแล็ปท็อปของคุณ 658 00:35:14,440 --> 00:35:18,104 และที่ว่าทำไม Chrome เป็นอยู่ในตัวเอง 659 00:35:18,104 --> 00:35:19,310 >> HUGH Zabriskie: ใช่ 660 00:35:19,310 --> 00:35:20,840 ที่ทำให้รู้สึก? 661 00:35:20,840 --> 00:35:21,369 เย็นเย็น. 662 00:35:21,369 --> 00:35:23,160 ผมก็จะไป แสดงตัวอย่างของหนึ่ง 663 00:35:23,160 --> 00:35:25,118 นี้สวยมากเป็น เท่าที่คุณจะได้รับในแง่ 664 00:35:25,118 --> 00:35:26,950 ในการเข้าถึงคอมพิวเตอร์ของผู้ใช้ 665 00:35:26,950 --> 00:35:30,180 หากคุณมีแป้นพิมพ์ USB เสียบ คุณสามารถใช้สิ่งที่เรียกว่าเว็บ 666 00:35:30,180 --> 00:35:32,180 MIDI API ซึ่งเราจะไม่ จริงๆพูดคุยเกี่ยวกับที่นี่ 667 00:35:32,180 --> 00:35:36,330 แต่นี้เป็น API อื่นที่เป็น ที่สร้างขึ้นในอย่างน้อย Chrome-- อีกครั้ง 668 00:35:36,330 --> 00:35:41,570 นี่คือเหตุผลที่เรารัก Chrome-- ผมคิดว่า Firefox หรือ Safari, 669 00:35:41,570 --> 00:35:44,300 นี้เป็นเรื่องง่ายที่จะ เบราว์เซอร์ที่แตกต่างกันมี google-- 670 00:35:44,300 --> 00:35:46,917 การสนับสนุนที่แตกต่างกันที่ API ที่พวกเขาได้ดำเนิน 671 00:35:46,917 --> 00:35:49,875 แต่ถ้าคุณต้องการที่จะเชื่อมต่อแป้นพิมพ์ และทำงานกับข้อมูลที่ 672 00:35:49,875 --> 00:35:52,850 ชนิดของการส่งแป้นพิมพ์ ข้อมูลผ่านไปยังคอมพิวเตอร์ 673 00:35:52,850 --> 00:35:57,620 แล้วใช้ออนไลน์ที่ API นี้ เป็นที่ที่คุณต้องการจะทำงานที่ 674 00:35:57,620 --> 00:35:58,150 >> เย็น. 675 00:35:58,150 --> 00:35:58,710 ตกลง. 676 00:35:58,710 --> 00:36:01,320 ดังนั้นการเคลื่อนไหวที่รวดเร็วที่นี่ 677 00:36:01,320 --> 00:36:03,310 เรากำลังทำในเวลา? 678 00:36:03,310 --> 00:36:04,210 >> ลำโพง 1: 15 679 00:36:04,210 --> 00:36:05,543 >> HUGH Zabriskie: 15 นาทีที่เหลือ? 680 00:36:05,543 --> 00:36:06,160 ตกลงเย็น 681 00:36:06,160 --> 00:36:08,170 ดังนั้นเราจะแข่งก่อนที่นี่ 682 00:36:08,170 --> 00:36:13,500 >> ดังนั้นโดยทั่วไปจุดหลักของ ความคิดนี้เป็นท่อ 683 00:36:13,500 --> 00:36:16,430 คือการที่แต่ละขั้นตอนในท่อ เป็นชุดของโหนดเสียง 684 00:36:16,430 --> 00:36:19,284 685 00:36:19,284 --> 00:36:20,950 แหล่งที่มาของเราสมมติว่าเป็น oscillator 686 00:36:20,950 --> 00:36:23,380 เราจำเป็นต้องสร้างโหนด oscillator 687 00:36:23,380 --> 00:36:25,690 และนั่นเป็นเพียงชนิด ของ function-- เล็ก ๆ น้อย ๆ 688 00:36:25,690 --> 00:36:30,460 และพวกเขากำลังทั้งหมดออก บริบทของเสียงที่นี่ 689 00:36:30,460 --> 00:36:32,885 >> ผู้ชม: เมื่อกล่าวว่า oscillator หมายความว่า 690 00:36:32,885 --> 00:36:37,250 ก็จริงอย่างแท้จริงไปจาก สองขั้วที่แตกต่างกันไปมา? 691 00:36:37,250 --> 00:36:41,170 >> HUGH Zabriskie: ไม่มีมันก็เหมือน เป็นตัวแทนดิจิตอล 692 00:36:41,170 --> 00:36:42,740 มันใช้งานจริงใน C ++ 693 00:36:42,740 --> 00:36:46,460 ที่จริงผมไม่ทราบรายละเอียด ของวิธีการที่จะนำมาใช้จริง 694 00:36:46,460 --> 00:36:48,500 แต่ทั้งหมดนี้จะทำงานเป็นข้อมูลไบนารี 695 00:36:48,500 --> 00:36:51,260 696 00:36:51,260 --> 00:36:52,370 อันที่จริงใช่ 697 00:36:52,370 --> 00:36:53,950 ที่จะบอกว่าผมจะทำได้ ที่จริงถ้าคุณสนใจ 698 00:36:53,950 --> 00:36:56,533 ฉันจะส่งคุณน้อยมาก ข้อมูลเกี่ยวกับวิธีรูปคลื่น 699 00:36:56,533 --> 00:37:00,181 จะถูกเก็บไว้ที่มีรูปแบบดิจิตอล 700 00:37:00,181 --> 00:37:00,680 ตกลงเย็น 701 00:37:00,680 --> 00:37:03,120 >> ดังนั้นเราจึงกำลังสร้างเสียงเหมือนไซน์ที่ คลื่นหรือสิ่งที่ต้องการที่อาจจะ 702 00:37:03,120 --> 00:37:04,190 440 เฮิร์ตซ์ 703 00:37:04,190 --> 00:37:05,830 เราสร้าง oscillator 704 00:37:05,830 --> 00:37:09,180 ถ้าเราต้องการที่จะตั้งค่าระดับเสียงเรา เชื่อมต่อทุกอย่างเพื่อ GainNode ที่ 705 00:37:09,180 --> 00:37:12,500 ซึ่งเราจะทำกับ .creategain 706 00:37:12,500 --> 00:37:14,250 ที่กำหนดระดับเสียงของคุณ 707 00:37:14,250 --> 00:37:17,820 คุณสามารถส่งผ่านไปยังที่ใด ของอื่น ๆ options-- ดี 708 00:37:17,820 --> 00:37:20,300 เพื่อให้เป็นแหล่งบัฟเฟอร์เสียง โหนดเป็นที่ที่คุณอาจจะ 709 00:37:20,300 --> 00:37:23,660 เก็บ MP3 ที่คุณโหลดใน 710 00:37:23,660 --> 00:37:27,670 >> Biquad กรองสำหรับการกรองถ้า คุณต้องการที่จะใช้เวลาทั้งหมดออกจากฐาน 711 00:37:27,670 --> 00:37:29,630 ของเพลงหรือสิ่งที่ต้องการที่ 712 00:37:29,630 --> 00:37:32,450 พระเจ้าห้ามคุณต้องการที่จะใช้ ฐานออกมาจากเพลง 713 00:37:32,450 --> 00:37:36,980 และโหนด AudioDestination คืออีก เหมือนที่สรุปของเราคือ 714 00:37:36,980 --> 00:37:39,980 หากคุณเคยสนใจในการดู ทุกตัวเลือกที่เป็นไปได้ที่แตกต่างกัน 715 00:37:39,980 --> 00:37:45,190 เพียงแค่ไปที่แท็บและให้ อัตโนมัติที่สมบูรณ์แบบขึ้นมา 716 00:37:45,190 --> 00:37:48,690 และถ้าคุณไม่สร้างคุณจะเห็นทั้งหมด สิ่งที่แตกต่างที่คุณสามารถสร้าง 717 00:37:48,690 --> 00:37:50,398 คุณสามารถสร้างแบบไดนามิก หน่วยประมวลผลสคริปต์ 718 00:37:50,398 --> 00:37:52,940 ฉันไม่ได้รู้ว่าสิ่งที่ คือสำหรับการควบรวมผสมช่อง 719 00:37:52,940 --> 00:37:55,930 และแยกช่องทางและทุกสิ่งที่ 720 00:37:55,930 --> 00:37:56,430 เย็น. 721 00:37:56,430 --> 00:37:59,560 722 00:37:59,560 --> 00:38:01,390 >> ดังนั้นนี่เป็นเพียง ตัวอย่างของท่อ 723 00:38:01,390 --> 00:38:03,580 ดังนั้นเราจึงมีสามแหล่งที่มา 724 00:38:03,580 --> 00:38:06,830 บางทีเหล่านี้เป็นรูปคลื่น, อาจจะเป็นไฟล์ MP3 เหล่านี้ 725 00:38:06,830 --> 00:38:08,740 ใครจะผ่าน กรองของอีกคนหนึ่ง 726 00:38:08,740 --> 00:38:12,404 ได้รับการบิดเบือนอีก ปรากฎว่าของคนทางซ้ายและขวา 727 00:38:12,404 --> 00:38:15,320 คุณสามารถทำทุกประเภทของสิ่งต่าง ๆ และ รอบพวกเขาทั้งหมดได้รับการผสมเข้าด้วยกัน 728 00:38:15,320 --> 00:38:18,880 แล้วออกมาพร้อมเสียง ในตอนท้ายเป็นปลายทาง 729 00:38:18,880 --> 00:38:22,720 นี่คือตัวอย่างของสิ่งที่มากขึ้น เว็บที่ซับซ้อนรหัสเสียงที่ดูเหมือนว่า 730 00:38:22,720 --> 00:38:26,720 คุณกำลังสร้างสิ่งเหล่านี้ วัตถุที่แตกต่างที่เหมาะสม here-- 731 00:38:26,720 --> 00:38:27,706 ผมไม่แน่ใจว่านี้ 732 00:38:27,706 --> 00:38:29,120 ไม่มีก็ไม่ได้ซูมเข้า 733 00:38:29,120 --> 00:38:29,620 ตกลง. 734 00:38:29,620 --> 00:38:31,257 >> SAM สีเขียว: คุณควบคุมเลื่อนขึ้น 735 00:38:31,257 --> 00:38:32,590 HUGH Zabriskie: การควบคุม Scroll-- 736 00:38:32,590 --> 00:38:33,000 SAM สีเขียว: ไม่มี 737 00:38:33,000 --> 00:38:33,500 ควบคุม-- 738 00:38:33,500 --> 00:38:36,540 739 00:38:36,540 --> 00:38:38,140 >> HUGH Zabriskie: โอ้, การควบคุม, เ​​ลื่อน? 740 00:38:38,140 --> 00:38:38,780 โอ้ gotcha 741 00:38:38,780 --> 00:38:41,480 ใช่. 742 00:38:41,480 --> 00:38:42,240 ว้าว Nope, อ้าง 743 00:38:42,240 --> 00:38:42,740 ตกลง. 744 00:38:42,740 --> 00:38:46,090 ฉันจะไม่ทำอย่างนั้น 745 00:38:46,090 --> 00:38:48,300 >> เพื่อใช่ในครั้งนี้เป็นครั้งแรก ส่วนที่นี่คุณจะเห็น 746 00:38:48,300 --> 00:38:52,720 เรากำลังสร้างสิ่งเหล่านี้แตกต่างกัน โหนดออกจากบริบท 747 00:38:52,720 --> 00:38:54,980 เราเพียงแค่ piecing พวกเขา ร่วมกันในส่วนที่สอง 748 00:38:54,980 --> 00:38:56,980 โดยฟังก์ชั่นที่เรียกว่าการเชื่อมต่อ 749 00:38:56,980 --> 00:38:58,830 นั่นเป็นกุญแจสำคัญจริงๆ ฟังก์ชั่นเสียงในเว็บ 750 00:38:58,830 --> 00:39:01,930 มันก็หมายความว่าเมื่อคุณได้ทำ บางสิ่งบางอย่างกับเสียงในหนึ่งโหนด 751 00:39:01,930 --> 00:39:03,705 ผ่านมันไปยังโหนดถั​​ดไป 752 00:39:03,705 --> 00:39:05,830 ดังนั้นเราจึงมีแหล่งที่มาของมัน เชื่อมต่อกับการวิเคราะห์ที่ 753 00:39:05,830 --> 00:39:09,140 วิเคราะห์ทำอะไรกับมัน มันจะไปบิดเบือนและอื่น ๆ 754 00:39:09,140 --> 00:39:12,725 และไปยังปลายทาง ที่ด้านล่างขวาที่นี่ 755 00:39:12,725 --> 00:39:13,225 เย็น. 756 00:39:13,225 --> 00:39:14,640 ตกลงดังนั้นเราจะให้ย้าย 757 00:39:14,640 --> 00:39:17,180 >> pipeline-- ครั้งเหล่านี้ เป็นท่อที่พบมากที่สุด 758 00:39:17,180 --> 00:39:21,300 เพื่อให้เราพูดคุยเกี่ยวกับสิ่งเหล่านี้เช่น บิดเบือนปรากฎว่าทุกสิ่งนี้ 759 00:39:21,300 --> 00:39:24,280 หากคุณสนใจจริงๆ ในการใช้สิ่ง Pro เครื่องมือ 760 00:39:24,280 --> 00:39:25,820 ผู้ที่อาจจะสนใจคุณ 761 00:39:25,820 --> 00:39:27,740 ถ้าไม่ได้บางทีคุณอาจเพียง ต้องการที่จะเล่นเสียง 762 00:39:27,740 --> 00:39:29,990 หรือบางทีคุณอาจเพียงต้องการที่จะ ตั้งค่าระดับเสียงในเสียง 763 00:39:29,990 --> 00:39:35,270 เหล่านี้เป็นสองการจัดเรียงที่พบมากที่สุด ของท่อในการผลิตเสียง 764 00:39:35,270 --> 00:39:38,640 >> อีกครั้งวิธีที่คุณสามารถใช้มัน ในฐานะที่เป็น oscillator-- อย่างนั้นเรามา 765 00:39:38,640 --> 00:39:42,460 การสาธิตทำของที่นี่ 766 00:39:42,460 --> 00:39:47,090 767 00:39:47,090 --> 00:39:52,225 ดังนั้นเรากำลังจะสร้าง บริบทเสียงที่เรียบง่ายที่นี่ 768 00:39:52,225 --> 00:39:54,350 และจากการที่เรากำลังจะไป เพื่อสร้างมือดีของเรา 769 00:39:54,350 --> 00:39:58,620 เพื่อให้เป็นอีกครั้งที่เรากำลังเพียง จะเรียกสร้าง Oscillator 770 00:39:58,620 --> 00:40:07,030 เรากำลังจะไปตั้งค่าความถี่ใน ที่ 440 เฮิร์ตซ์ที่ทุกคนชื่นชอบ 771 00:40:07,030 --> 00:40:13,290 แล้วเราจะเชื่อมต่อไปยังปลายทาง point-- ซึ่งเป็นลำโพงเพื่อ 772 00:40:13,290 --> 00:40:15,750 ปลายทางบริบท 773 00:40:15,750 --> 00:40:21,400 สุดท้ายเราก็บอกว่าเริ่มต้นที่ศูนย์ วินาทีต่อจากนี้และเราได้เสียง? 774 00:40:21,400 --> 00:40:22,400 >> [เรียกเข้า] 775 00:40:22,400 --> 00:40:24,980 >> HUGH Zabriskie: ที่นี่เราไป 776 00:40:24,980 --> 00:40:25,940 มันเป็นเพียงคลื่นไซน์ 777 00:40:25,940 --> 00:40:26,440 ตกลงเย็น 778 00:40:26,440 --> 00:40:28,274 แล้วเราจะหยุดที่ 779 00:40:28,274 --> 00:40:30,520 >> ผู้ชม: Where did ข้อเสนอแนะที่มาจากไหน? 780 00:40:30,520 --> 00:40:31,250 >> HUGH Zabriskie: ข้อเสนอแนะหรือไม่? 781 00:40:31,250 --> 00:40:32,458 โอ้อาจไมโครโฟนของเรา 782 00:40:32,458 --> 00:40:34,221 783 00:40:34,221 --> 00:40:35,470 เพื่อใช่ว่าเป็นวิธีที่คุณทำมัน 784 00:40:35,470 --> 00:40:37,261 และอันที่จริงถ้าผมมี เก็บมันทำงานคุณ 785 00:40:37,261 --> 00:40:39,540 อาจมีความถี่ ค่าที่มันทำงาน 786 00:40:39,540 --> 00:40:43,320 เพื่อให้เป็นสิ่งที่สนุกกับการเล่นรอบ 787 00:40:43,320 --> 00:40:44,930 เย็น. 788 00:40:44,930 --> 00:40:46,600 ที่มักจะเป็นคนหนึ่งที่น่ารักที่จะนำเสนอ 789 00:40:46,600 --> 00:40:48,792 >> SAM GREEN: เราไม่ได้ คิดเกี่ยวกับการที่เราไม่? 790 00:40:48,792 --> 00:40:50,500 HUGH Zabriskie: ใช่ ที่เป็นที่น่ารังเกียจอย่างใดอย่างหนึ่ง 791 00:40:50,500 --> 00:40:53,249 ดังนั้น buffer loading-- ฉันจะแสดง ตัวอย่างของว่าที่ส่วนท้ายสุด 792 00:40:53,249 --> 00:40:55,090 นั่นคือโหลด MP3 793 00:40:55,090 --> 00:40:58,880 และไมโครโฟน, เพียงแค่คุณใช้ฟังก์ชั่น เรียกว่า Navigator.getUserMedia () 794 00:40:58,880 --> 00:41:03,240 เพื่อขอการเข้าถึงของผู้ใช้ ไมโครโฟนสำหรับข้อมูลที่ 795 00:41:03,240 --> 00:41:05,610 >> นี่คือการกรองฉันจะ เพียงแค่ให้ย้ายจากนี้ 796 00:41:05,610 --> 00:41:08,600 นี้เป็นระดับที่สูงสวย แต่กรองเพียงช่วยให้คุณสามารถ 797 00:41:08,600 --> 00:41:16,154 >> [beeping] 798 00:41:16,154 --> 00:41:18,320 กรองยังช่วยให้คุณ เพื่อสร้างสิ่งที่ชอบสีชมพู 799 00:41:18,320 --> 00:41:20,050 เสียงสัญญาณรบกวนสีน้ำตาล, สีเสียงสีขาว 800 00:41:20,050 --> 00:41:24,330 หากคุณต้องการที่จะสร้างเสียงบริสุทธิ์ที่ บางคนชอบที่จะรับประทานอาหารรอบกับ 801 00:41:24,330 --> 00:41:27,490 คุณสามารถใช้เสียงเว็บ กรองจะทำอย่างนั้น 802 00:41:27,490 --> 00:41:30,039 >> Panning-- เสียงเพื่อให้จินตนาการ ถ้าคุณกำลังเขียนเกม 803 00:41:30,039 --> 00:41:32,330 และคุณต้องการเสียงไป เสียงเหมือนมันมาเช่น 804 00:41:32,330 --> 00:41:36,090 การถ่ายภาพผ่านหน้าจอคุณ สามารถใช้ปรากฎของเสียง 805 00:41:36,090 --> 00:41:39,770 เพื่อสร้างชนิดของรูปกรวยนี้ ซึ่ง like-- มัน Mathy สวย 806 00:41:39,770 --> 00:41:41,850 แต่มันเป็นความจริงจริงๆ เย็นถ้าคุณได้รับมันทำงาน 807 00:41:41,850 --> 00:41:44,500 และมีบางส่วนที่ดี บทเรียนเกี่ยวกับฉันสามารถส่ง 808 00:41:44,500 --> 00:41:46,400 โดยทั่วไปคุณสามารถชนิด การสร้างเสียง 809 00:41:46,400 --> 00:41:50,480 ของสิ่งที่เกิดขึ้นโดยในทาง 3D 810 00:41:50,480 --> 00:41:57,350 และถ้าคุณมีความสนใจดีเจที่คุณสามารถ เริ่มต้นการผสมและข้ามเพลงซีดจาง 811 00:41:57,350 --> 00:42:01,260 >> นี่เป็นเพียงบางขั้นพื้นฐานมาก รหัสโดยทั่วไปสิ่งที่ผมทำมาก่อน 812 00:42:01,260 --> 00:42:06,140 ชุดนี้ปริมาณของ oscillator ดังนั้นเราสร้างมือดีของเรา 813 00:42:06,140 --> 00:42:07,380 ซึ่งจะสร้างรูปแบบของคลื่น 814 00:42:07,380 --> 00:42:09,940 เราสร้าง GainNode ของเรา ตั้งค่าความถี่ของเรา 815 00:42:09,940 --> 00:42:14,170 แล้วเชื่อมต่อ oscillator ไปยัง GainNode ซึ่งโดยทั่วไปการเปลี่ยนแปลง 816 00:42:14,170 --> 00:42:16,760 เท่าใดสัญญาณที่ได้รับอนุญาตผ่าน 817 00:42:16,760 --> 00:42:20,467 แต่จริงๆมันเป็นดิจิตอล สิ่งเพื่อให้มันมากขึ้น just-- ใช่ 818 00:42:20,467 --> 00:42:23,550 นั่นไม่ใช่สิ่งที่เกิดขึ้นจริง แต่นั่นคือสิ่งที่เกิดขึ้นในชีวิตจริง 819 00:42:23,550 --> 00:42:24,393 ที่มีกำไร 820 00:42:24,393 --> 00:42:27,258 >> ผู้ชม: --quantization พารามิเตอร์ของปริมาณหรือไม่ 821 00:42:27,258 --> 00:42:28,174 HUGH Zabriskie: ขออภัย? 822 00:42:28,174 --> 00:42:30,360 ผู้ชม: มันเป็น พารามิเตอร์ปริมาณไท? 823 00:42:30,360 --> 00:42:31,840 HUGH Zabriskie: ใช่ 824 00:42:31,840 --> 00:42:34,620 และนี่คือสิ่งหนึ่งที่ฉันจริงๆ ขาดในความรู้ของฉัน 825 00:42:34,620 --> 00:42:38,010 วิธีการทำงานของกำไรในระดับดิจิตอล 826 00:42:38,010 --> 00:42:40,140 ฉันรู้ว่ามีจริง สัญญาณก็พื้น 827 00:42:40,140 --> 00:42:45,120 การควบคุมเท่าใดคุณ ขยายสัญญาณ 828 00:42:45,120 --> 00:42:47,017 ดังนั้นใช่ 829 00:42:47,017 --> 00:42:50,100 ฉันจะส่งข้อมูลเพิ่มเติมเกี่ยวกับ ว่าเพราะฉันจะอยากรู้อยากเห็นจริง 830 00:42:50,100 --> 00:42:51,099 เพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับการที่ 831 00:42:51,099 --> 00:42:54,090 แต่โดยทั่วไปพารามิเตอร์ หนึ่งคือ fold-- 832 00:42:54,090 --> 00:42:59,690 signal-- ดังและเป็นศูนย์ไม่มี สัญญาณหรือคุณจะไม่ได้ยินเสียงใด ๆ 833 00:42:59,690 --> 00:43:03,150 เราจะข้ามเวลาการสาธิตเพราะเห็นว่า มันเป็นสิ่งที่ผมทำมาก่อน 834 00:43:03,150 --> 00:43:07,630 และอีกครั้ง Context.Destination เป็นโหนดปลายทางเสียง 835 00:43:07,630 --> 00:43:08,360 น่ากลัว, OK 836 00:43:08,360 --> 00:43:10,470 >> ดังนั้นฉันจะทำอย่างรวดเร็วสองสาธิต 837 00:43:10,470 --> 00:43:11,760 เรากำลังทำในเวลา? 838 00:43:11,760 --> 00:43:12,640 >> ลำโพง 1: ประมาณ 10 นาที 839 00:43:12,640 --> 00:43:13,130 >> HUGH Zabriskie: 10 นาที? 840 00:43:13,130 --> 00:43:13,630 ที่ดี! 841 00:43:13,630 --> 00:43:14,320 ที่น่ากลัว 842 00:43:14,320 --> 00:43:19,010 >> ดังนั้นคนแรกที่ฉันจะ ไม่ก็เรียกว่าเพลงที่ชื่นชอบของฉัน 843 00:43:19,010 --> 00:43:22,410 ดังนั้นนี้เป็นเพียง HTML JavaScript เล็ก ๆ น้อย ๆ 844 00:43:22,410 --> 00:43:25,510 เรากำลังจะมีสองปุ่ม ในหน้าเล่นเพลงที่ชื่นชอบ 845 00:43:25,510 --> 00:43:29,192 และหยุดเพลงที่ชื่นชอบ 846 00:43:29,192 --> 00:43:30,180 ฉันจะเปลี่ยน 847 00:43:30,180 --> 00:43:32,110 >> ผู้ชม: ปกคลุมไมโครโฟนของคุณ 848 00:43:32,110 --> 00:43:33,430 >> HUGH Zabriskie: ใช่ 849 00:43:33,430 --> 00:43:36,300 และฉันได้โหลดที่นี่ สคริปต์ที่ basically-- 850 00:43:36,300 --> 00:43:38,520 และนี่คือที่มีประโยชน์จริงๆ สำหรับโหลด MP3, 851 00:43:38,520 --> 00:43:41,820 ดังนั้นนี้ก็ทำให้ โหลดเพลง MP3 วิธีที่เร็วกว่า 852 00:43:41,820 --> 00:43:44,180 มันเป็นพื้นเพียงเสื้อคลุม 853 00:43:44,180 --> 00:43:48,737 มันก็จะทำให้กระบวนการของ โหลดเพลง MP3 ในได้เร็วขึ้นมาก 854 00:43:48,737 --> 00:43:51,570 มิฉะนั้นคุณกำลังใช้การร้องขอ HTTP, เหมือนกับสิ่งที่เราทำ 855 00:43:51,570 --> 00:43:53,950 ในปัจจุบันชิ้นตั้งกับเซิร์ฟเวอร์ 856 00:43:53,950 --> 00:43:55,950 มันน่าเกลียดจริงๆคุณ ไม่ต้องการที่จะทำมัน 857 00:43:55,950 --> 00:44:04,110 >> ดังนั้นผู้ชายคนนี้บอริส SMUs เขียนจริงๆ เครื่องมือที่มีประโยชน์เล็ก ๆ น้อย ๆ ที่เรียกว่า BufferLoader 858 00:44:04,110 --> 00:44:08,780 สิ่งที่คุณทำคือเพียงแค่ผ่านมัน บริบทคุณผ่านมัน list-- 859 00:44:08,780 --> 00:44:11,327 หรือใช่มันเป็นรายการใน JavaScript หรือไม่? 860 00:44:11,327 --> 00:44:12,160 SAM GREEN: อาร์เรย์ 861 00:44:12,160 --> 00:44:14,201 HUGH Zabriskie: โอ้มันเป็น อาร์เรย์ที่เหมาะสม 862 00:44:14,201 --> 00:44:18,660 มันเป็นอาร์เรย์ของเส้นทาง ไปยังไฟล์ที่แตกต่างกัน 863 00:44:18,660 --> 00:44:21,990 แล้วคุณจะผ่านมันฟังก์ชั่น 864 00:44:21,990 --> 00:44:25,530 นี่คือการเรียกกลับที่เราได้พูดคุย เกี่ยวกับกับการโหลดไม่ตรงกัน 865 00:44:25,530 --> 00:44:28,720 ที่จะถูกเรียกว่า ที่ครั้งหนึ่งเคยโหลดไฟล์ 866 00:44:28,720 --> 00:44:33,780 และฟังก์ชั่นที่เรียกว่าเมื่อ ของการโหลดไฟล์จะเป็นปริมณฑล 867 00:44:33,780 --> 00:44:35,840 อาร์เรย์ของบัฟเฟอร์โหลด 868 00:44:35,840 --> 00:44:37,990 ดังนั้นที่เกิดขึ้นที่นี่ 869 00:44:37,990 --> 00:44:41,180 โดยทั่วไปเป็น BufferList จะเป็นหนึ่ง value-- 870 00:44:41,180 --> 00:44:46,380 หรือจะเป็นอาเรย์ของ ระยะเวลาหนึ่งที่มีอยู่ในนั้นอยู่ในดัชนี 871 00:44:46,380 --> 00:44:51,320 ศูนย์โหลดไฟล์ทั้งหมดของ MP3 872 00:44:51,320 --> 00:44:53,320 ดังนั้นสิ่งที่ฉันทำเมื่อฉันเสร็จ โหลดผมก็ 873 00:44:53,320 --> 00:44:57,430 สร้างแหล่งบัฟเฟอร์ซึ่ง เป็นแหล่งที่มาของโหนดบัฟเฟอร์เสียง 874 00:44:57,430 --> 00:45:03,410 ขั้นตอนต่อไปคือผมโหลดใน source.buffer เป็นบัฟเฟอร์โหลดเต็ม 875 00:45:03,410 --> 00:45:06,740 จาก BufferList-- มันเป็นจำนวนมาก buffers-- 876 00:45:06,740 --> 00:45:10,255 และจากนั้นคุณเชื่อมต่อเสียงที่ บัฟเฟอร์ไปยังปลายทาง 877 00:45:10,255 --> 00:45:12,380 ดังนั้นสิ่งที่จะทำ เป็นเพียงแค่ใส่เพลง MP3 878 00:45:12,380 --> 00:45:15,260 ตรงผ่านการส่งออก และเริ่มต้นทันที 879 00:45:15,260 --> 00:45:18,010 เมื่อได้รับสายนี้ 880 00:45:18,010 --> 00:45:21,660 >> เย็นดังนั้นเรามาดู เรื่องนี้เกิดขึ้นในการดำเนินการ 881 00:45:21,660 --> 00:45:24,490 ของฉัน [ไม่ได้ยิน] ที่นี่เรามาดู 882 00:45:24,490 --> 00:45:26,430 ดังนั้นฉันแค่ไป เริ่มต้นเซิร์ฟเวอร์ขั้นพื้นฐาน 883 00:45:26,430 --> 00:45:28,660 นั่นคือสิ่งที่ ที่คุณต้องทำถ้าคุณ 884 00:45:28,660 --> 00:45:32,490 การขอรับการโหลดไฟล์ 885 00:45:32,490 --> 00:45:34,140 ฉันจะเริ่มต้นเซิร์ฟเวอร์ขั้นพื้นฐาน 886 00:45:34,140 --> 00:45:38,200 นี้เป็นพื้นทั้งหมดของคุณ PSET ตอนนี้ในหนึ่งบรรทัด 887 00:45:38,200 --> 00:45:43,930 แต่มันเป็นเพียงแค่การเริ่มต้น เซิร์ฟเวอร์พอร์ต 80/80 888 00:45:43,930 --> 00:45:47,300 ดังนั้นเราจึงไปกว่าที่นี่เรา จะโหลด 80/80, 889 00:45:47,300 --> 00:45:49,110 เรากำลังจะไปที่เพลงที่ชื่นชอบของฉัน 890 00:45:49,110 --> 00:45:51,660 ดังนั้นถ้าผมตี "เล่นของฉัน เพลงโปรด "ในขณะนี้ 891 00:45:51,660 --> 00:45:53,964 มันจะโหลดของฉัน เพลงที่ชื่นชอบและเล่น it-- 892 00:45:53,964 --> 00:45:55,880 [ดนตรี - นกอินทรี "ชีวิตใน FAST  LANE "] 893 00:45:55,880 --> 00:46:00,490 --which เกิดขึ้นเป็น "ชีวิตใน ช่องทางที่รวดเร็ว "โดยนกอินทรี 894 00:46:00,490 --> 00:46:06,346 ตอนนี้ผมสามารถตี "หยุดของฉัน เพลงโปรด "และเล่นมัน 895 00:46:06,346 --> 00:46:09,160 >> [ดนตรี - นกอินทรี "ชีวิตใน FAST  LANE "] 896 00:46:09,160 --> 00:46:18,340 >> และถ้าเราไปมากกว่าที่จะปลอบใจเพราะ ผมใช้ตัวแปรทั่วโลกมากกว่าที่นี่ 897 00:46:18,340 --> 00:46:23,390 ในการติดตามค่านี้ก็จริง ตอนนี้จะได้รับการยอมรับในคอนโซล 898 00:46:23,390 --> 00:46:25,160 ดังนั้นจึงสร้างอัตโนมัติสำหรับฉัน 899 00:46:25,160 --> 00:46:29,991 นั่นคือสิ่งที่เล่นตอนนี้ และฉันก็สามารถเรียก source.stop () 900 00:46:29,991 --> 00:46:30,490 ว่า 901 00:46:30,490 --> 00:46:34,930 902 00:46:34,930 --> 00:46:35,860 ดีที่คุณรู้อะไรไหม 903 00:46:35,860 --> 00:46:39,760 เพียงเพื่อให้พวกคุณเคยได้ยินเรื่องนี้ song-- คุณอาจจะรู้จักเพลงนี้ 904 00:46:39,760 --> 00:46:41,801 >> [ดนตรี - RICK Astley "จะไม่ทำให้  คุณ "] 905 00:46:41,801 --> 00:46:42,299 906 00:46:42,299 --> 00:46:44,215 [ดนตรี - นกอินทรี "ชีวิตใน FAST  LANE "] 907 00:46:44,215 --> 00:46:46,195 ตอนนี้เราได้รับการ Rickrolled 908 00:46:46,195 --> 00:46:50,155 ตกลงที่ดีในการเคลื่อนย้าย 909 00:46:50,155 --> 00:46:51,160 เย็น. 910 00:46:51,160 --> 00:46:54,554 ดังนั้นนี่เป็นพื้นตัวอย่างของ เพียงวิธีการที่คุณสามารถโหลด MP3 file-- 911 00:46:54,554 --> 00:46:56,470 [ดนตรี - นกอินทรี "ชีวิตใน FAST  LANE "] 912 00:46:56,470 --> 00:46:59,590 --and เล่นและหยุดและเริ่มต้น 913 00:46:59,590 --> 00:47:03,008 ฉันจะได้ทำมากขึ้น [ไม่ได้ยิน] 914 00:47:03,008 --> 00:47:07,570 >> คนสุดท้ายที่ฉันจะทำคือ ฉันจะแสดงให้คุณ [ไม่ได้ยิน] 915 00:47:07,570 --> 00:47:18,070 >> [เล่นเพลง] 916 00:47:18,070 --> 00:47:21,800 >> มันเหมือนกับ ogg.wave.mp3 917 00:47:21,800 --> 00:47:26,450 ผมคิดว่าถ้าผมจำไม่ผิด ผมเคยทำงานเป็นบางประเด็นที่มี .m4a, 918 00:47:26,450 --> 00:47:27,721 แต่ผมไม่แน่ใจว่าเกี่ยวกับการที่ 919 00:47:27,721 --> 00:47:28,470 ผมคิดว่า mp3.wave-- 920 00:47:28,470 --> 00:47:28,930 921 00:47:28,930 --> 00:47:30,971 >> [ดนตรี - RICK Astley "จะไม่ทำให้  คุณ "] 922 00:47:30,971 --> 00:47:35,930 923 00:47:35,930 --> 00:47:36,500 >> ตกลงที่ดี 924 00:47:36,500 --> 00:47:37,625 ผมไม่ควรจะบอกว่า 925 00:47:37,625 --> 00:47:40,570 อย่างไรก็ตามสวัสดี 926 00:47:40,570 --> 00:47:43,430 927 00:47:43,430 --> 00:47:45,490 ดังนั้นเราจึงมีการเปิดนี้ 928 00:47:45,490 --> 00:47:52,320 ดังนั้นตอนนี้สิ่งที่ผมทำคือผมสร้างพื้น ไวยากรณ์ขั้นพื้นฐานสำหรับการสร้างเพลง 929 00:47:52,320 --> 00:47:57,610 ดังนั้นถ้าผมทำสิ่งที่ต้องการเพิ่ม g4 เมื่อวันที่ 1 ที่ 2 สิ่งที่หมายถึงก็คือว่า 930 00:47:57,610 --> 00:48:00,950 เพิ่มบันทึกเปียโน G4, ซึ่งเป็นหนึ่งในสี่ G 931 00:48:00,950 --> 00:48:02,680 ขึ้นบนเปียโนจากด้านล่าง 932 00:48:02,680 --> 00:48:05,930 ดังนั้นนี้เป็นชนิดของ MIDI พูด, ดังนั้นสำหรับผู้ที่มีเพลงที่ใช้ 933 00:48:05,930 --> 00:48:07,860 นี้เป็นเพียงบันทึก MIDI 934 00:48:07,860 --> 00:48:10,090 >> ผู้ชม: นั่นคือ G ของกลาง C ใช่มั้ย? 935 00:48:10,090 --> 00:48:11,840 >> HUGH Zabriskie: นี่คือ G เหนือกลาง C ที่เหมาะสม 936 00:48:11,840 --> 00:48:12,470 >> ผู้ชม: เหนือกลางซี 937 00:48:12,470 --> 00:48:13,345 >> HUGH Zabriskie: ใช่ 938 00:48:13,345 --> 00:48:14,340 อันที่จริงใช่ 939 00:48:14,340 --> 00:48:16,131 ผมคิดว่าผมทำจริง มันเป็นหนึ่งใน [ไม่ได้ยิน] 940 00:48:16,131 --> 00:48:18,860 ดังนั้นนี้อาจจะมีคู่ข้างต้นว่า 941 00:48:18,860 --> 00:48:20,070 ดังนั้นเรามาดู 942 00:48:20,070 --> 00:48:21,152 ถ้าผมตี Play-- 943 00:48:21,152 --> 00:48:22,110 [ซ้ำเปียโนหมายเหตุ] 944 00:48:22,110 --> 00:48:23,200 --we're จะได้ยินว่า 945 00:48:23,200 --> 00:48:25,700 แนวคิดก็คือว่าจะดำเนินการ เช่นเดียวกับบรรทัดคำสั่งจะ, 946 00:48:25,700 --> 00:48:27,510 ดังนั้นถ้าฉันไปขึ้นและลง บนแป้นพิมพ์ของฉันคุณ 947 00:48:27,510 --> 00:48:31,550 สามารถกลับไปก่อนหน้านี้ คำสั่งซึ่งจะเป็นประโยชน์สวย 948 00:48:31,550 --> 00:48:35,136 และด้านล่างเป็นรายการของแทร็ค ซึ่งได้รับการทำงานบนห่วง 949 00:48:35,136 --> 00:48:38,260 >> ผู้ชม: คุณได้สมมติว่า แป้นพิมพ์ 88 คีย์ว่าใช่มั้ย? 950 00:48:38,260 --> 00:48:41,051 >> HUGH Zabriskie: คำถามคือ ฉันสมมติว่าแป้นพิมพ์ 88 คีย์ 951 00:48:41,051 --> 00:48:41,990 และใช่ฉัน 952 00:48:41,990 --> 00:48:45,030 สิ่งที่ผมทำคือผม โดยทั่วไปใช้เวลา 88 ตัวอย่าง 953 00:48:45,030 --> 00:48:46,970 ของเปียโนหนึ่งสำหรับแต่ละครั้ง 954 00:48:46,970 --> 00:48:49,180 และเพื่อให้ทุกครั้งที่คุณ ได้ยินเสียงบันทึกจากนี้ไป 955 00:48:49,180 --> 00:48:57,550 ที่เป็นจริงวงที่มีลักษณะ like-- นี้คือการเล่นในวง 956 00:48:57,550 --> 00:49:00,120 เพื่อให้ทราบทุกนี้กำลังทำงาน 957 00:49:00,120 --> 00:49:02,860 สิ่งที่เกิดขึ้นคือผม สร้างบัฟเฟอร์อีกครั้ง 958 00:49:02,860 --> 00:49:06,010 สร้างโหนดกำไรที่จะตั้งค่าระดับเสียงที่ 959 00:49:06,010 --> 00:49:08,240 เพียงแค่นี้จริงๆ วิธีที่ซับซ้อนของการบอกว่าฉัน 960 00:49:08,240 --> 00:49:10,550 เก็บบัฟเฟอร์ใน source.buffer 961 00:49:10,550 --> 00:49:13,160 ฉันให้กำไรที่ฉัน เชื่อมต่อกับกำไรที่ 962 00:49:13,160 --> 00:49:15,576 กำไรที่มีการเชื่อมต่อกับ การส่งออกและจากนั้นผมเล่นมัน 963 00:49:15,576 --> 00:49:20,735 เพื่อให้เป็นชนิดของกระบวนการ ของการในแหล่งบัฟเฟอร์ 964 00:49:20,735 --> 00:49:24,820 >> ผู้ชม: คุณสามารถใช้เวลาที่เป็นจริง เสียงแห้งและทำให้มันเปียก [ไม่ได้ยิน] 965 00:49:24,820 --> 00:49:26,260 >> HUGH Zabriskie: คุณสามารถใช่ 966 00:49:26,260 --> 00:49:29,260 มีอีกคำกริยาเป็นมี ความล่าช้าการบิดเบือน 967 00:49:29,260 --> 00:49:33,260 โดยทั่วไปคุณสามารถใส่อะไรใน ระหว่างในแซนวิชที่ of-- ดี 968 00:49:33,260 --> 00:49:37,660 ท่อเป็นคำเปรียบเทียบที่ดีกว่า แต่คุณสามารถเพิ่มอะไรในการที่ 969 00:49:37,660 --> 00:49:38,200 เย็น. 970 00:49:38,200 --> 00:49:40,280 >> ดังนั้นผมจึงจะเสร็จสิ้นการสาธิต ที่นี่เพื่อให้คุณมีความรู้สึก 971 00:49:40,280 --> 00:49:46,390 เพียงจำนวนของครั้งที่คุณ สามารถเรียกใช้ฟังก์ชั่นที่ทั้งหมดในครั้งเดียว 972 00:49:46,390 --> 00:49:49,280 ดังนั้นฉันจะลบ 973 00:49:49,280 --> 00:49:59,110 ฉันจะสร้างเครื่องกำเนิดไฟฟ้า that-- โดยทั่วไปสิ่งที่ does-- นี้เป็นจริง 974 00:49:59,110 --> 00:50:04,220 ชนิดของ syntax-- ซับซ้อน แต่ก็ จะสร้างบันทึกได้ทันที 975 00:50:04,220 --> 00:50:06,601 และเพิ่งเริ่มเล่น พวกเขามันประเมินพวกเขา 976 00:50:06,601 --> 00:50:07,392 [interposing เปียโน] 977 00:50:07,392 --> 00:50:10,990 978 00:50:10,990 --> 00:50:12,817 >> ดังนั้นเราก็สามารถทำให้เพลงเล็ก ๆ น้อย ๆ ที่นี่ 979 00:50:12,817 --> 00:50:13,608 [interposing เปียโน] 980 00:50:13,608 --> 00:50:39,570 981 00:50:39,570 --> 00:50:41,470 >> ดังนั้นสิ่งที่คำสั่งนี้ ไม่เช่นเป็น 982 00:50:41,470 --> 00:50:46,910 มันจะใช้เวลาทั้งสามบันทึกสำหรับ เปียโนแล้วทำให้พวกเขาบน B3 983 00:50:46,910 --> 00:50:48,660 รูปแบบนี้อาจจะทำให้ ความรู้สึกเล็ก ๆ น้อย ๆ 984 00:50:48,660 --> 00:50:50,590 ให้กับผู้ที่มี เพลงพื้นหลังที่นี่ 985 00:50:50,590 --> 00:50:55,180 986 00:50:55,180 --> 00:50:56,551 >> ฉันสามารถเพิ่มเตะกลอง 987 00:50:56,551 --> 00:50:57,050 ฉันทำได้-- 988 00:50:57,050 --> 00:50:58,048 >> [interposing เครื่องมือ] 989 00:50:58,048 --> 00:50:59,256 >> --just เล่นรอบกับที่ 990 00:50:59,256 --> 00:51:12,519 991 00:51:12,519 --> 00:51:13,474 >> เพื่อให้คุณสามารถ make-- 992 00:51:13,474 --> 00:51:14,515 [interposing เครื่องมือ] 993 00:51:14,515 --> 00:51:15,513 หนึ่งที่เล็ก ๆ น้อย ๆ ที่น่ารำคาญมากขึ้น 994 00:51:15,513 --> 00:51:16,554 [interposing เครื่องมือ] 995 00:51:16,554 --> 00:51:26,491 996 00:51:26,491 --> 00:51:30,981 >> ดังนั้นที่สุ่มเพิ่มฉาบแห้ง ทราบทุกวันที่ 16 กับ 16% 997 00:51:30,981 --> 00:51:31,481 [ไม่ได้ยิน] 998 00:51:31,481 --> 00:51:32,522 >> [interposing เครื่องมือ] 999 00:51:32,522 --> 00:51:40,962 1000 00:51:40,962 --> 00:51:50,400 >> ใช่ดังนั้นวิธีการนี​​้ works-- มันเสมอใน 4: 4 1001 00:51:50,400 --> 00:51:51,441 [interposing เครื่องมือ] 1002 00:51:51,441 --> 00:52:06,910 1003 00:52:06,910 --> 00:52:10,902 >> ใช่ดังนั้นสี่และ 16/8 1004 00:52:10,902 --> 00:52:14,851 1005 00:52:14,851 --> 00:52:15,892 [interposing เครื่องมือ] 1006 00:52:15,892 --> 00:52:27,970 1007 00:52:27,970 --> 00:52:33,780 >> ดังนั้นโดยเฉลี่ยแล้วคุณจะได้รับ 60% ของฮิตบันทึกที่ 16 1008 00:52:33,780 --> 00:52:35,990 >> Anyways นี้เป็นเพียง ชนิดของการแสดงปิด 1009 00:52:35,990 --> 00:52:39,780 บางสิ่งที่คุณสามารถทำได้ สร้างด้วยเว็บเสียงของ API 1010 00:52:39,780 --> 00:52:43,840 มันมีประสิทธิภาพจริงๆก็รวดเร็วจริงๆ และคุณสามารถทำสิ่งต่างๆมากมายเย็น 1011 00:52:43,840 --> 00:52:44,340 กับมัน 1012 00:52:44,340 --> 00:52:51,260 ดังนั้นอีกครั้งคำถามใด ๆ ที่คุณมี อีเมล myself-- Hugh-- หรือแซม 1013 00:52:51,260 --> 00:52:55,869 และตรงไปตรงมา Google ได้ ตันของแหล่งข้อมูลที่ดี 1014 00:52:55,869 --> 00:52:56,660 คำถามใด ๆ ที่ผ่านมา? 1015 00:52:56,660 --> 00:52:57,970 ใช่. 1016 00:52:57,970 --> 00:53:00,790 >> ผู้ชม: เพ​​ื่อให้คุณสามารถเข้าถึง ไมโครโฟนในตัว 1017 00:53:00,790 --> 00:53:03,089 ถ้าคุณต้องการที่จะ ใช้ไมโครโฟนดีกว่า? 1018 00:53:03,089 --> 00:53:05,380 HUGH Zabriskie: ถ้าคุณต้องการ ที่จะใช้ไมโครโฟนดีกว่า? 1019 00:53:05,380 --> 00:53:11,320 ดังนั้นครั้งนี้เป็นส่วนหนึ่งของ นามธรรมระหว่างโครเมี่ยม 1020 00:53:11,320 --> 00:53:12,950 และส่วนที่เหลือของคอมพิวเตอร์ของคุณ 1021 00:53:12,950 --> 00:53:18,950 เว้นแต่จะสามารถใช้ได้ผ่าน API ที่เช่นเว็บ MIDI API, 1022 00:53:18,950 --> 00:53:22,030 คุณอาจจะพบว่าแฮ็กบาง แต่โดยทั่วไปไม่ได้ที่เป็นไปได้ 1023 00:53:22,030 --> 00:53:25,300 >> SAM สีเขียว: คุณสามารถ also-- ทุก Chrome รู้ 1024 00:53:25,300 --> 00:53:28,820 คือสิ่งที่ไมโครโฟนเริ่มต้นของคุณ และมันเข้าถึงที่ 1025 00:53:28,820 --> 00:53:33,410 ดังนั้นถ้าคุณมีไมโครโฟนที่คุณสามารถ ตั้งเป็นค่าเริ่มต้นไมโครโฟนของคอมพิวเตอร์ 1026 00:53:33,410 --> 00:53:35,990 คุณสามารถเข้าถึงมันเป็นอย่างนั้น และมันอาจจะทำงาน 1027 00:53:35,990 --> 00:53:37,490 HUGH Zabriskie: นั่นเป็นจุดที่ดี 1028 00:53:37,490 --> 00:53:39,656 ฉันไม่เคยพยายามที่ แต่ คุณอาจจะสามารถชนิด 1029 00:53:39,656 --> 00:53:45,700 of-- ถ้าคุณเปลี่ยนเส้นทางลำโพงใส่ คุณอาจจะสามารถที่จะทำอย่างนั้นใช่ 1030 00:53:45,700 --> 00:53:48,360 >> คำถามใด ๆ ที่ผ่านมา? 1031 00:53:48,360 --> 00:53:49,340 เย็น. 1032 00:53:49,340 --> 00:53:51,680 ดีขอขอบคุณพวกคุณ มากสำหรับการดู 1033 00:53:51,680 --> 00:53:52,199 ฉันฮิวจ์ 1034 00:53:52,199 --> 00:53:52,990 SAM GREEN: ฉันแซม 1035 00:53:52,990 --> 00:53:55,410 HUGH Zabriskie: และนี่คือ CS50 1036 00:53:55,410 --> 00:53:56,767