±à¼ÍƼö: |
±¾ÎÄÀ´×Ô¼òÊ飬ECMAScript
6(ÒÔϼò³ÆES6)ÊÇJavaScriptÓïÑÔµÄÏÂÒ»´ú±ê×¼,ÒѾÔÚ2015Äê6ÔÂÕýʽ·¢²¼ÁË¡£ |
|
ES6Óï·¨
Tags: javascript
[TOC]
const Óë let ±äÁ¿
ʹÓÃvar´øÀ´µÄÂé·³:
function getClothing(isCold)
{
if (isCold) {
var freezing = 'Grab a jacket!';
} else {
var hot = 'It's a shorts kind of day.';
console.log(freezing);
}
} |
ÔËÐÐgetClothing(false)ºóÊä³öµÄÊÇundefined,ÕâÊÇÒòΪִÐÐfunctionº¯Êý֮ǰ,ËùÓбäÁ¿¶¼»á±»ÌáÉý,
ÌáÉýµ½º¯Êý×÷ÓÃÓò¶¥²¿.
letÓëconstÉùÃ÷µÄ±äÁ¿½â¾öÁËÕâÖÖÎÊÌâ,ÒòΪËûÃÇÊǿ鼶×÷ÓÃÓò,
ÔÚ´úÂë¿é(ÓÃ{}±íʾ)ÖÐʹÓÃlet»òconstÉùÃ÷±äÁ¿, ¸Ã±äÁ¿»áÏÝÈëÔÝʱÐÔËÀÇøÖ±µ½¸Ã±äÁ¿µÄÉùÃ÷±»´¦Àí.
function getClothing(isCold)
{
if (isCold) {
const freezing = 'Grab a jacket!';
} else {
const hot = 'It's a shorts kind of day.';
console.log(freezing);
}
} |
ÔËÐÐgetClothing(false)ºóÊä³öµÄÊÇReferenceError: freezing
is not defined,ÒòΪ freezing ûÓÐÔÚ else Óï¾ä¡¢º¯Êý×÷ÓÃÓò»òÈ«¾Ö×÷ÓÃÓòÄÚÉùÃ÷£¬ËùÒÔÅ׳ö
ReferenceError¡£
¹ØÓÚʹÓÃletÓëconst¹æÔò:
ʹÓÃletÉùÃ÷µÄ±äÁ¿¿ÉÒÔÖØÐ¸³Öµ,µ«ÊDz»ÄÜÔÚͬһ×÷ÓÃÓòÄÚÖØÐÂÉùÃ÷
ʹÓÃconstÉùÃ÷µÄ±äÁ¿±ØÐ븳ֵ³õʼ»¯,µ«ÊDz»ÄÜÔÚͬһ×÷ÓÃÓòÀàÖØÐÂÉùÃ÷Ò²ÎÞ·¨ÖØÐ¸³Öµ.
Ä£°å×ÖÃæÁ¿
ÔÚES6֮ǰ,½«×Ö·û´®Á¬½Óµ½Ò»ÆðµÄ·½·¨ÊÇ+»òÕßconcat()·½·¨,Èç
const student
= {
name: 'Richard Kalehoff',
guardian: 'Mr. Kalehoff'
};
const teacher = {
name: 'Mrs. Wilson',
room: 'N231'
}
let message = student.name + ' please see '
+ teacher.name + ' in ' + teacher.room + ' to
pick up your report card.'; |
Ä£°å×ÖÃæÁ¿±¾ÖÊÉÏÊǰüº¬Ç¶Èëʽ±í´ïʽµÄ×Ö·û´®×ÖÃæÁ¿.
Ä£°å×ÖÃæÁ¿Óõ¹ÒýºÅ ( `` )£¨¶ø²»Êǵ¥ÒýºÅ ( '' ) »òË«ÒýºÅ(
"" )£©±íʾ£¬¿ÉÒÔ°üº¬Óà ${expression} ±íʾµÄռλ·û
let message
= `${student.name} please see ${teacher.name}
in ${teacher.room} to pick up your report card.`; |
½â¹¹
ÔÚES6ÖÐ,¿ÉÒÔʹÓý⹹´ÓÊý×éºÍ¶ÔÏóÌáȡֵ²¢¸³Öµ¸ø¶ÀÌØµÄ±äÁ¿
½â¹¹Êý×éµÄÖµ:
const point
= [10, 25, -34];
const [x, y, z] = point;
console.log(x, y, z); |
Prints: 10 25 -34
[]±íʾ±»½â¹¹µÄÊý×é, x,y,z±íʾҪ½«Êý×éÖеÄÖµ´æ´¢ÔÚÆäÖеıäÁ¿, Ôڽ⹹Êý×éÊÇ, »¹¿ÉÒÔºöÂÔÖµ,
ÀýÈçconst[x,,z]=point,ºöÂÔy×ø±ê.
½â¹¹¶ÔÏóÖеÄÖµ:
const gemstone
= {
type: 'quartz',
color: 'rose',
karat: 21.29
};
const {type, color, karat} = gemstone;
console.log(type, color, karat); |
»¨À¨ºÅ { } ±íʾ±»½â¹¹µÄ¶ÔÏó£¬type¡¢color ºÍ karat ±íʾҪ½«¶ÔÏóÖеÄÊôÐÔ´æ´¢µ½ÆäÖеıäÁ¿
¶ÔÏó×ÖÃæÁ¿¼òд·¨
let type = 'quartz';
let color = 'rose';
let carat = 21.29;
const gemstone = {
type: type,
color: color,
carat: carat
};
console.log(gemstone); |
ʹÓúÍËù·ÖÅäµÄ±äÁ¿Ãû³ÆÏàͬµÄÃû³Æ³õʼ»¯¶ÔÏóʱÈç¹ûÊôÐÔÃû³ÆºÍËù·ÖÅäµÄ±äÁ¿Ãû³ÆÒ»Ñù£¬ÄÇô¾Í¿ÉÒÔ´Ó¶ÔÏóÊôÐÔÖÐɾµôÕâÐ©ÖØ¸´µÄ±äÁ¿Ãû³Æ¡£
let type = 'quartz';
let color = 'rose';
let carat = 21.29;
const gemstone = {type,color,carat};
console.log(gemstone); |
¼òд·½·¨µÄÃû³Æ:
const gemstone
= {
type,
color,
carat,
calculateWorth: function() {
// ½«¸ù¾ÝÀàÐÍ(type)£¬ÑÕÉ«(color)ºÍ¿ËÀ(carat)¼ÆË㱦ʯ(gemstone)µÄ¼ÛÖµ
}
}; |
ÄäÃûº¯Êý±»·ÖÅ䏸ÊôÐÔ calculateWorth£¬µ«ÊÇÕæµÄÐèÒª
function ¹Ø¼ü×ÖÂð£¿ÔÚ ES6 Öв»ÐèÒª£¡
let gemstone
= {
type,
color,
carat,
calculateWorth() { ... }
}; |
for...ofÑ»·
for...ofÑ»·ÊÇ×îÐÂÌí¼Óµ½ JavaScript Ñ»·ÏµÁÐÖеÄÑ»·¡£
Ëü½áºÏÁËÆäÐÖµÜÑ»·ÐÎʽ for Ñ»·ºÍ for...in Ñ»·µÄÓÅÊÆ£¬¿ÉÒÔÑ»·Èκοɵü´ú£¨Ò²¾ÍÊÇ×ñÊØ¿Éµü´úÐÒ飩ÀàÐ͵ÄÊý¾Ý¡£Ä¬ÈÏÇé¿öÏ£¬°üº¬ÒÔÏÂÊý¾ÝÀàÐÍ£ºString¡¢Array¡¢Map
ºÍ Set£¬×¢Òâ²»°üº¬ Object Êý¾ÝÀàÐÍ£¨¼´ {}£©¡£Ä¬ÈÏÇé¿öÏ£¬¶ÔÏ󲻿ɵü´ú¡£
forÑ»·
const digits
= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let i = 0; i < digits.length; i++) {
console.log(digits[i]);
} |
for Ñ»·µÄ×î´óȱµãÊÇÐèÒª¸ú×Ù¼ÆÊýÆ÷ºÍÍ˳öÌõ¼þ¡£
ËäÈ» for Ñ»·ÔÚÑ»·Êý×éʱµÄÈ·¾ßÓÐÓÅÊÆ£¬µ«ÊÇijЩÊý¾Ý½á¹¹²»ÊÇÊý×飬Òò´Ë²¢·ÇʼÖÕÊʺÏʹÓà loop
Ñ»·¡£
for...inÑ»·
const digits
= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (const index in digits) {
console.log(digits[index]);
} |
ҪʹÓà index À´·ÃÎÊÊý×éµÄÖµ
µ±ÄãÐèÒªÏòÊý×éÖÐÌí¼Ó¶îÍâµÄ·½·¨£¨»òÁíÒ»¸ö¶ÔÏó£©Ê±£¬for...in
Ñ»·»á´øÀ´ºÜ´óµÄÂé·³¡£ÒòΪ for...in Ñ»·Ñ»··ÃÎÊËùÓпÉö¾ÙµÄÊôÐÔ£¬Òâζ×ÅÈç¹ûÏòÊý×éµÄÔÐÍÖÐÌí¼ÓÈÎºÎÆäËûÊôÐÔ£¬ÕâЩÊôÐÔÒ²»á³öÏÖÔÚÑ»·ÖС£
Array.prototype.decimalfy
= function() {
for (let i = 0; i < this.length; i++) {
this[i] = this[i].toFixed(2);
}
};
const digits = [0, 1, 2, 3, 4, 5, 6, 7, 8,
9];
for (const index in digits) {
console.log(digits[index]);
} |
forEach Ñ»· ÊÇÁíÒ»ÖÖÐÎʽµÄ JavaScript Ñ»·¡£µ«ÊÇ£¬forEach()
ʵ¼ÊÉÏÊÇÊý×é·½·¨£¬Òò´ËÖ»ÄÜÓÃÔÚÊý×éÖС£Ò²ÎÞ·¨Í£Ö¹»òÍ˳ö forEach Ñ»·¡£Èç¹ûÏ£ÍûÄãµÄÑ»·ÖгöÏÖÕâÖÖÐÐΪ£¬ÔòÐèҪʹÓûù±¾µÄ
for Ñ»·¡£
for...ofÑ»·
for...of Ñ»·ÓÃÓÚÑ»··ÃÎÊÈκοɵü´úµÄÊý¾ÝÀàÐÍ¡£
for...of Ñ»·µÄ±àд·½Ê½ºÍ for...in Ñ»·µÄ»ù±¾Ò»Ñù£¬Ö»Êǽ«
in Ìæ»»Îª of£¬¿ÉÒÔºöÂÔË÷Òý¡£
const digits
= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (const digit of digits) {
console.log(digit);
}
|
½¨ÒéʹÓø´Êý¶ÔÏóÃû³ÆÀ´±íʾ¶à¸öÖµµÄ¼¯ºÏ¡£ÕâÑù£¬Ñ»·¸Ã¼¯ºÏʱ£¬¿ÉÒÔʹÓÃÃû³ÆµÄµ¥Êý°æ±¾À´±íʾ¼¯ºÏÖеĵ¥¸öÖµ¡£ÀýÈ磬for
(const button of buttons) {¡}¡£
for...of Ñ»·»¹¾ßÓÐÆäËûÓÅÊÆ£¬½â¾öÁË for ºÍ for...in
Ñ»·µÄ²»×ãÖ®´¦¡£Äã¿ÉÒÔËæÊ±Í£Ö¹»òÍ˳ö for...of Ñ»·¡£
for (const digit
of digits) {
if (digit % 2 === 0) {
continue;
}
console.log(digit);
} |
²»Óõ£ÐÄÏò¶ÔÏóÖÐÌí¼ÓеÄÊôÐÔ¡£for...of Ñ»·½«Ö»Ñ»··ÃÎʶÔÏóÖеÄÖµ¡£
Array.prototype.decimalfy
= function() {
for (i = 0; i < this.length; i++) {
this[i] = this[i].toFixed(2);
}
};
const digits = [0, 1, 2, 3, 4, 5, 6, 7, 8,
9];
for (const digit of digits) {
console.log(digit);
} |
Õ¹¿ªÔËËã·û
Õ¹¿ªÔËËã·û£¨ÓÃÈý¸öÁ¬ÐøµÄµã (...) ±íʾ£©ÊÇ ES6 ÖеÄиÅÄʹÄãÄܹ»½«×ÖÃæÁ¿¶ÔÏóÕ¹¿ªÎª¶à¸öÔªËØ
const books
= ["Don Quixote", "The Hobbit",
"Alice in Wonderland", "Tale of
Two Cities"];
console.log(...books); |
Õ¹¿ªÔËËã·ûµÄÒ»¸öÓÃ;ÊǽáºÏÊý×é¡£
Èç¹ûÄãÐèÒª½áºÏ¶à¸öÊý×飬ÔÚÓÐÕ¹¿ªÔËËã·û֮ǰ£¬±ØÐëʹÓà ArrayµÄ
concat() ·½·¨¡£
const fruits
= ["apples", "bananas", "pears"];
const vegetables = ["corn", "potatoes",
"carrots"];
const produce = fruits.concat(vegetables);
console.log(produce); |
ʹÓÃÕ¹¿ª·ûÀ´½áºÏÊý×é
const fruits
= ["apples", "bananas", "pears"];
const vegetables = ["corn", "potatoes",
"carrots"];
const produce = [...fruits,...vegetables];
console.log(produce); |
Ê£Óà²ÎÊý(¿É±ä²ÎÊý)
ʹÓÃÕ¹¿ªÔËËã·û½«Êý×éÕ¹¿ªÎª¶à¸öÔªËØ, ʹÓÃÊ£Óà²ÎÊý¿ÉÒÔ½«¶à¸öÔªËØ°ó¶¨µ½Ò»¸öÊý×éÖÐ.
Ê£Óà²ÎÊýÒ²ÓÃÈý¸öÁ¬ÐøµÄµã ( ... ) ±íʾ£¬Ê¹ÄãÄܹ»½«²»¶¨ÊýÁ¿µÄÔªËØ±íʾΪÊý×é.
ÓÃ;1: ½«±äÁ¿¸³Êý×éֵʱ:
const order
= [20.17, 18.67, 1.50, "cheese", "eggs",
"milk", "bread"];
const [total, subtotal, tax, ...items] = order;
console.log(total, subtotal, tax, items); |
ÓÃ;2: ¿É±ä²ÎÊýº¯Êý
¶ÔÓÚ²ÎÊý²»¹Ì¶¨µÄº¯Êý,ES6֮ǰÊÇʹÓòÎÊý¶ÔÏó(arguments)´¦Àí:
function sum()
{
let total = 0;
for(const argument of arguments) {
total += argument;
}
return total;
} |
ÔÚES6ÖÐʹÓÃÊ£Óà²ÎÊýÔËËã·ûÔò¸üΪ¼ò½à,¿É¶ÁÐÔÌá¸ß:
function sum(...nums)
{
let total = 0;
for(const num of nums) {
total += num;
}
return total;
} |
ES6¼ýÍ·º¯Êý
ES6֮ǰ,ʹÓÃÆÕͨº¯Êý°ÑÆäÖÐÿ¸öÃû×Öת»»Îª´óдÐÎʽ£º
const upperizedNames
= ['Farrin', 'Kagure', 'Asser'].map(function(name)
{
return name.toUpperCase();
}); |
¼ýÍ·º¯Êý±íʾ:
const upperizedNames
= ['Farrin', 'Kagure', 'Asser'].map(
name => name.toUpperCase()
); |
ÆÕͨº¯Êý¿ÉÒÔÊǺ¯ÊýÉùÃ÷»òÕߺ¯Êý±í´ïʽ, µ«ÊǼýÍ·º¯ÊýʼÖÕ¶¼ÊDZí´ïʽ, È«³ÌÊǼýÍ·º¯Êý±í´ïʽ, Òò´ËÒò´Ë½öÔÚ±í´ïʽÓÐЧʱ²ÅÄÜʹÓ㬰üÀ¨£º
´æ´¢ÔÚ±äÁ¿ÖУ¬
µ±×ö²ÎÊý´«µÝ¸øº¯Êý£¬
´æ´¢ÔÚ¶ÔÏóµÄÊôÐÔÖС£
const greet
= name => `Hello ${name}!`; |
¿ÉÒÔÈçϵ÷ÓÃ:
Èç¹ûº¯ÊýµÄ²ÎÊýÖ»ÓÐÒ»¸ö,²»ÐèҪʹÓÃ()°üÆðÀ´,µ«ÊÇÖ»ÓÐÒ»¸ö»òÕß¶à¸ö,
Ôò±ØÐëÐèÒª½«²ÎÊýÁбí·ÅÔÚÔ²À¨ºÅÄÚ:
// ¿Õ²ÎÊýÁбíÐèÒªÀ¨ºÅ
const sayHi = () => console.log('Hello Udacity
Student!');
// ¶à¸ö²ÎÊýÐèÒªÀ¨ºÅ
const orderIceCream = (flavor, cone) => console.log(`Here's
your ${flavor} ice cream in a ${cone} cone.`);
orderIceCream('chocolate', 'waffle'); |
Ò»°ã¼ýÍ·º¯Êý¶¼Ö»ÓÐÒ»¸ö±í´ïʽ×÷Ϊº¯ÊýÖ÷Ìâ:
const upperizedNames
= ['Farrin', 'Kagure', 'Asser'].map(
name => name.toUpperCase()
); |
ÕâÖÖº¯Êý±í´ïʽÐÎʽ³ÆÎª¼òдÖ÷ÌåÓï·¨:
ÔÚº¯ÊýÖ÷ÌåÖÜΧûÓл¨À¨ºÅ,
×Ô¶¯·µ»Ø±í´ïʽ
µ«ÊÇÈç¹û¼ýÍ·º¯ÊýµÄÖ÷ÌåÄÚÐèÒª¶àÐдúÂë, ÔòÐèҪʹÓ󣹿Ö÷ÌåÓï·¨:
Ëü½«º¯ÊýÖ÷Ìå·ÅÔÚ»¨À¨ºÅÄÚ
ÐèҪʹÓà return Óï¾äÀ´·µ»ØÄÚÈÝ¡£
const upperizedNames
= ['Farrin', 'Kagure', 'Asser'].map( name =>
{
name = name.toUpperCase();
return `${name} has ${name.length} characters
in their name`;
}); |
javascript±ê×¼º¯Êýthis
new ¶ÔÏó
const mySundae
= new Sundae('Chocolate', ['Sprinkles', 'Hot Fudge']); |
sundaeÕâ¸ö¹¹Ô캯ÊýÄÚµÄthisµÄÖµÊÇʵÀý¶ÔÏó, ÒòΪËûʹÓÃnew±»µ÷ÓÃ.
Ö¸¶¨µÄ¶ÔÏó
const result
= obj1.printName.call(obj2); |
º¯ÊýʹÓÃcall/apply±»µ÷ÓÃ,thisµÄÖµÖ¸ÏòÖ¸¶¨µÄobj2,ÒòΪcall()µÚÒ»¸ö²ÎÊýÃ÷È·ÉèÖÃthisµÄÖ¸Ïò
ÉÏÏÂ`ÎĶÔÏó
º¯ÊýÊǶÔÏóµÄ·½·¨, thisÖ¸Ïò¾ÍÊÇÄǸö¶ÔÏó,´Ë´¦this¾ÍÊÇÖ¸Ïòdata.
È«¾Ö¶ÔÏó»ò undefined
´Ë´¦ÊÇthisÖ¸ÏòÈ«¾Ö¶ÔÏó,ÔÚÑϸñģʽÏÂ,Ö¸Ïòundefined.
javascriptÖÐthisÊǺܸ´ÔӵĸÅÄî, ÒªÏêϸÅжÏthis,Çë²Î¿¼this»íÈ»¿ªÀÊ
¼ýÍ·º¯ÊýºÍthis
¶ÔÓÚÆÕͨº¯Êý, thisµÄÖµ»ùÓÚº¯ÊýÈçºÎ±»µ÷ÓÃ, ¶ÔÓÚ¼ýÍ·º¯Êý,thisµÄÖµ»ùÓÚº¯ÊýÖÜΧµÄÉÏÏÂÎÄ,
»»¾ä»°Ëµ,thisµÄÖµºÍº¯ÊýÍâÃæµÄthisµÄÖµÊÇÒ»ÑùµÄ.
function IceCream() {
this.scoops = 0;
}
// Ϊ IceCream Ìí¼Ó addScoop ·½·¨
IceCream.prototype.addScoop = function() {
setTimeout(function() {
this.scoops++;
console.log('scoop added!');
console.log(this.scoops); // undefined+1=NaN
console.log(dessert.scoops); //0
}, 500);
};
----------
±êÌâ
const dessert = new IceCream();
dessert.addScoop(); |
´«µÝ¸ø setTimeout() µÄº¯Êý±»µ÷ÓÃʱûÓõ½ new¡¢call() »ò apply()£¬Ò²Ã»Óõ½ÉÏÏÂÎĶÔÏó¡£Òâζן¯ÊýÄÚµÄ
this µÄÖµÊÇÈ«¾Ö¶ÔÏ󣬲»ÊÇ dessert ¶ÔÏó¡£Êµ¼ÊÉÏ·¢ÉúµÄÇé¿öÊÇ£¬´´½¨ÁËÐ嵀 scoops
±äÁ¿£¨Ä¬ÈÏֵΪ undefined£©£¬È»ºóµÝÔö£¨undefined + 1 ½á¹ûΪ NaN£©;
½â¾ö´ËÎÊÌâµÄ·½Ê½Ö®Ò»ÊÇʹÓñհü(closure):
// ¹¹Ô캯Êý
function IceCream() {
this.scoops = 0;
}
// Ϊ IceCream Ìí¼Ó addScoop ·½·¨
IceCream.prototype.addScoop = function() {
const cone = this; // ÉèÖà `this` ¸ø `cone`±äÁ¿
setTimeout(function() {
cone.scoops++; // ÒýÓÃ`cone`±äÁ¿
console.log('scoop added!');
console.log(dessert.scoops);//1
}, 0.5);
};
const dessert = new IceCream();
dessert.addScoop(); |
¼ýÍ·º¯ÊýµÄ×÷ÓÃÕýÊÇÈç´Ë, ½«setTimeOut()µÄº¯Êý¸ÄΪ¼ôÍ·º¯Êý:
// ¹¹Ô캯Êý
function IceCream() {
this.scoops = 0;
}
// Ϊ IceCream Ìí¼Ó addScoop ·½·¨
IceCream.prototype.addScoop = function() {
setTimeout(() => { // Ò»¸ö¼ýÍ·º¯Êý±»´«µÝ¸øsetTimeout
this.scoops++;
console.log('scoop added!');
console.log(dessert.scoops);//1
}, 0.5);
};
const dessert = new IceCream();
dessert.addScoop();
|
ĬÈϲÎÊýº¯Êý
function greet(name, greeting)
{
name = (typeof name !== 'undefined') ? name :
'Student';
greeting = (typeof greeting !== 'undefined') ?
greeting : 'Welcome';
return `${greeting} ${name}!`;
}
greet(); // Welcome Student!
greet('James'); // Welcome James!
greet('Richard', 'Howdy'); // Howdy Richard!
|
greet() º¯ÊýÖлìÂÒµÄǰÁ½ÐеÄ×÷ÓÃÊÇʲô£¿ËüÃǵÄ×÷ÓÃÊǵ±ËùÐèµÄ²ÎÊýδÌṩʱ£¬Îªº¯ÊýÌṩĬÈϵÄÖµ¡£µ«ÊÇ¿´ÆðÀ´ºÜÂé·³,
ES6ÒýÈëÒ»ÖÖеķ½Ê½´´½¨Ä¬ÈÏÖµ, Ëû½ÐĬÈϺ¯Êý²ÎÊý:
function greet(name = 'Student',
greeting = 'Welcome') {
return `${greeting} ${name}!`;
}
greet(); // Welcome Student!
greet('James'); // Welcome James!
greet('Richard', 'Howdy'); // Howdy Richard!
|
ĬÈÏÖµÓë½â¹¹
ĬÈÏÖµÓë½â¹¹Êý×é
function createGrid([width
= 5, height = 5]) {
return `Generates a ${width} x ${height} grid`;
}
createGrid([]); // Generates a 5 x 5 grid
createGrid([2]); // Generates a 2 x 5 grid
createGrid([2, 3]); // Generates a 2 x 3 grid
createGrid([undefined, 3]); // Generates a 5
x 3 grid
|
createGrid() º¯ÊýÔ¤ÆÚ´«ÈëµÄÊÇÊý×é¡£Ëüͨ¹ý½â¹¹½«Êý×éÖеĵÚÒ»ÏîÉèΪ width£¬µÚ¶þÏîÉèΪ
height¡£Èç¹ûÊý×éΪ¿Õ£¬»òÕßÖ»ÓÐÒ»ÏÄÇô¾Í»áʹÓÃĬÈϲÎÊý£¬²¢½«È±Ê§µÄ²ÎÊýÉèΪĬÈÏÖµ 5¡£
µ«ÊÇ´æÔÚÒ»¸öÎÊÌâ:
createGrid(); // throws
an error
|
Uncaught TypeError: Cannot read property
'Symbol(Symbol.iterator)' of undefined
³öÏÖ´íÎó£¬ÒòΪ createGrid() Ô¤ÆÚ´«ÈëµÄÊÇÊý×飬Ȼºó¶ÔÆä½øÐн⹹¡£ÒòΪº¯Êý±»µ÷ÓÃʱûÓд«ÈëÊý×飬ËùÒÔ³öÏÖÎÊÌâ¡£µ«ÊÇ£¬ÎÒÃÇ¿ÉÒÔʹÓÃĬÈϵĺ¯Êý²ÎÊý£¡
function createGrid([width
= 5, height = 5] = []) {
return `Generating a grid of ${width} by ${height}`;
}
createGrid(); // Generates a 5 x 5 grid
|
Returns: Generates a 5 x 5 grid
ĬÈÏÖµÓë½â¹¹º¯Êý
¾ÍÏñʹÓÃÊý×éĬÈÏÖµ½â¹¹Êý×éÒ»Ñù£¬º¯Êý¿ÉÒÔÈöÔÏó³ÉΪһ¸öĬÈϲÎÊý£¬²¢Ê¹ÓöÔÏó½â¹¹£º
function createSundae({scoops
= 1, toppings = ['Hot Fudge']}={}) {
const scoopText = scoops === 1 ? 'scoop' : 'scoops';
return `Your sundae has ${scoops} ${scoopText}
with ${toppings.join(' and ')} toppings.`;
}
createSundae({}); // Your sundae has 1 scoop
with Hot Fudge toppings.
createSundae({scoops: 2}); // Your sundae has
2 scoops with Hot Fudge toppings.
createSundae({scoops: 2, toppings: ['Sprinkles']});
// Your sundae has 2 scoops with Sprinkles toppings.
createSundae({toppings: ['Cookie Dough']});
// Your sundae has 1 scoop with Cookie Dough
toppings.
createSundae(); // Your sundae has 1 scoop with
Hot Fudge toppings.
|
3.Êý×éĬÈÏÖµÓë¶ÔÏóĬÈÏÖµ
ĬÈϺ¯Êý²ÎÊýÖ»ÊǸö¼òµ¥µÄÌí¼ÓÄÚÈÝ£¬µ«ÊÇÈ´´øÀ´ºÜ¶à±ãÀû£¡ÓëÊý×éĬÈÏÖµÏà±È£¬¶ÔÏóĬÈÏÖµ¾ß±¸µÄÒ»¸öÓÅÊÆÊÇÄܹ»´¦ÀíÌø¹ýµÄÑ¡Ïî¡£¿´¿´ÏÂÃæµÄ´úÂ룺
function createSundae({scoops
= 1, toppings = ['Hot Fudge']} = {}) { ¡ }
|
ÔÚ createSundae() º¯ÊýʹÓöÔÏóĬÈÏÖµ½øÐн⹹ʱ£¬Èç¹ûÄãÏëʹÓÃ
scoops µÄĬÈÏÖµ£¬µ«ÊǸü¸Ä toppings£¬ÄÇôֻÐèʹÓà toppings ´«ÈëÒ»¸ö¶ÔÏó£º
createSundae({toppings:
['Hot Fudge', 'Sprinkles', 'Caramel']}); |
½«ÉÏÊöʾÀýÓëʹÓÃÊý×éĬÈÏÖµ½øÐн⹹µÄͬһº¯ÊýÏà¶Ô±È¡£
function createSundae([scoops
= 1, toppings = ['Hot Fudge']] = []) { ¡ } |
¶ÔÓÚÕâ¸öº¯Êý£¬Èç¹ûÏëʹÓà scoops µÄĬÈÏÊýÁ¿£¬µ«ÊǸü¸Ä toppings£¬Ôò±ØÐëÒÔÕâÖÖÆæ¹ÖµÄ·½Ê½µ÷ÓÃÄãµÄº¯Êý£º
createSundae([undefined,
['Hot Fudge', 'Sprinkles', 'Caramel']]); |
ÒòΪÊý×éÊÇ»ùÓÚλÖõģ¬ÎÒÃÇÐèÒª´«Èë undefined ÒÔÌø¹ýµÚÒ»¸ö²ÎÊý£¨²¢Ê¹ÓÃĬÈÏÖµ£©À´µ½´ïµÚ¶þ¸ö²ÎÊý¡£
JavascriptÀà
ES5´´½¨Àà:
function Plane(numEngines)
{
this.numEngines = numEngines;
this.enginesActive = false;
}
// ÓÉËùÓÐʵÀý "¼Ì³Ð" µÄ·½·¨
Plane.prototype.startEngines = function () {
console.log('starting engines...');
this.enginesActive = true;
}; |
ES6ÀàÖ»ÊÇÒ»¸öÓï·¨ÌÇ,ÔÐͼÌÐøÊµ¼ÊÉÏÔڵײãÒþ²ØÆðÀ´, Ó봫ͳÀà»úÖÆÓïÑÔÓÐÐ©Çø±ð.
class Plane {
//constructor·½·¨ËäÈ»ÔÚÀàÖÐ,µ«²»ÊÇÔÐÍÉϵķ½·¨,Ö»ÊÇÓÃÀ´Éú³ÉʵÀýµÄ.
constructor(numEngines) {
this.numEngines = numEngines;
this.enginesActive = false;
}
//ÔÐÍÉϵķ½·¨, ÓÉËùÓÐʵÀý¶ÔÏó¹²Ïí.
startEngines() {
console.log('starting engines¡');
this.enginesActive = true;
}
}
console.log(typeof Plane); //function |
javascriptÖÐÀàÆäʵֻÊÇfunction, ·½·¨Ö®¼ä²»ÄÜʹÓÃ,,²»ÓöººÅÇø·ÖÊôÐԺͷ½·¨.
¾²Ì¬·½·¨
ÒªÌí¼Ó¾²Ì¬·½·¨£¬ÇëÔÚ·½·¨Ãû³ÆÇ°Ãæ¼ÓÉϹؼü×Ö static
class Plane {
constructor(numEngines) {
this.numEngines = numEngines;
this.enginesActive = false;
}
static badWeather(planes) {
for (plane of planes) {
plane.enginesActive = false;
}
}
startEngines() {
console.log('starting engines¡');
this.enginesActive = true;
}
} |
¹Ø¼ü×Öclass´øÀ´ÆäËû»ùÓÚÀàµÄÓïÑԵĺܶà˼Ïë,µ«ÊÇûÓÐÏòjavascriptÖÐÌí¼Ó´Ë¹¦ÄÜ
javascriptÀàʵ¼ÊÉÏ»¹ÊÇÔÐͼ̳Ð
´´½¨javascriptÀàµÄÐÂʵÀýʱ±ØÐëʹÓÃnew¹Ø¼ü×Ö
super ºÍ extends
ʹÓÃеÄsuperºÍextends¹Ø¼ü×ÖÀ©Õ¹Àà:
class Tree {
constructor(size = '10', leaves = {spring: 'green',
summer: 'green', fall: 'orange', winter: null})
{
this.size = size;
this.leaves = leaves;
this.leafColor = null;
}
changeSeason(season) {
this.leafColor = this.leaves[season];
if (season === 'spring') {
this.size += 1;
}
}
}
class Maple extends Tree {
constructor(syrupQty = 15, size, leaves) {
super(size, leaves); //superÓÃ×÷º¯Êý
this.syrupQty = syrupQty;
}
changeSeason(season) {
super.changeSeason(season);//superÓÃ×÷¶ÔÏó
if (season === 'spring') {
this.syrupQty += 1;
}
}
gatherSyrup() {
this.syrupQty -= 3;
}
} |
ʹÓÃES5±àдͬÑù¹¦ÄܵÄÀà:
function Tree(size, leaves)
{
this.size = size || 10;
this.leaves = leaves || {spring: 'green', summer:
'green', fall: 'orange', winter: null};
this.leafColor;
}
Tree.prototype.changeSeason = function(season)
{
this.leafColor = this.leaves[season];
if (season === 'spring') {
this.size += 1;
}
}
function Maple (syrupQty, size, leaves) {
Tree.call(this, size, leaves);
this.syrupQty = syrupQty || 15;
}
Maple.prototype = Object.create(Tree.prototype);
Maple.prototype.constructor = Maple;
Maple.prototype.changeSeason = function(season)
{
Tree.prototype.changeSeason.call(this, season);
if (season === 'spring') {
this.syrupQty += 1;
}
}
Maple.prototype.gatherSyrup = function() {
this.syrupQty -= 3;
} |
super ±ØÐëÔÚ this ֮ǰ±»µ÷ÓÃ
ÔÚ×ÓÀ๹Ô캯ÊýÖУ¬ÔÚʹÓà this ֮ǰ£¬±ØÐëÏȵ÷Ó󬼶Àà¡£
class Apple {}
class GrannySmith extends Apple {
constructor(tartnessLevel, energy) {
this.tartnessLevel = tartnessLevel; // ÔÚ 'super'
֮ǰ»áÅ׳öÒ»¸ö´íÎó£¡
super(energy);
}
} |
|