ES 6新特性(更新編)
8351 ワード
まず、カルニアさんに感謝します.ES 6の矢印関数の中でthisが指すエラーを指摘してくれました.今回は主に矢印関数のthis指向の問題を更新しました.
ECMAScript 6.0(以下、ES 6という)はJavaScript言語の次世代規格で、2015年6月に正式に発表されました.JavaScript言語は複雑な大規模なアプリケーションを作成し、企業レベルの開発言語になることを目標としています.
ES 6は多くの機能を追加しました.もっと便利です.私たちの機能はあまり多くないです.本題に入る
ES 6新特性.png
一、変数について
ES 5
1.グローバルスコープ変数と関数スコープ変数だけがあります.「変数のリフティング」(プログラムが新しい関数に入ると、その関数内のすべての変数の宣言を関数の開始位置に置きます.変数の宣言を上げるだけで、変数の割当値は上がりません.)
ES 6新規追加:ブロックレベルスコープ変数
1、let定義ブロックレベルスコープ変数
1、変数の向上がない場合は、先に声明してから2、let声明の変数を使用して、前のlet、var、conset声明の変数と名前を変更することはできません.
1、const宣言変数は、同時に値を付けなければならない.const宣言の変数は初期化されなければならない.初期化が完了すると、修正は許されない.2、const宣言変数もブロックレベル作用ドメイン変数3、const声明の変数は「変数の向上」がない.先に声明を出してから4、const声明の変数は前のlet、var、const声明の変数と重複してはいけない.
ES 6は、モジュラス関数のデフォルト値を設定できます.
つまり、関数を呼び出すと、デフォルトのイメージが設定されていても、関数に参加しなくても、関数の実装はデフォルトのイメージです.
1.関数の体外で、thisはwindowオブジェクトのことを指します.関数の中で、関数thisを呼び出した人は誰を指しますか?3.コンストラクションでは、thisは新しく作成したオブジェクトのことを指します.
三、配列に関する展開演算
配列の前に3つの点を加えます.
applyとcallは、いずれも対象自体に属性や方法がないので、他のオブジェクトの属性や方法を引用します.つまり、どちらもthisの属性を変更できます.
異なったところ
apply(thisの指向、配列/argments)call(thisの指向、パラメータ1、パラメータ2、パラメータ3)
配列の解除
includies(「文字」)文字列の中にある文字が存在するかどうかを判断するために、trueに戻りfalseに戻ります.
includes(「文字」、startIndex)文字列の下に表示されているstartIndexがあるかどうかを判断するために使用されます.trueに戻ります.falseに戻りません.
ES 5でオブジェクトを作成するいくつかの方法
1.字面量法2.工場モード3.コンストラクション4.組み合わせ方式コンストラクタ+プロトタイプモード
ES 6でオブジェクトを作成
set()順序付きリストセット(重複なし)
Set()とは、シーケンステーブルのセット(setの要素は重複していない)のことです.
setに含まれる方法add()、has()、delete()、clear()など
アドド()追加
じゃ、止まってください.
いいえ、ありません
老後を拝む
老後は楽しいですね
いいえ、ありません
読者の皆様、新年おめでとうございます.いいね
ECMAScript 6.0(以下、ES 6という)はJavaScript言語の次世代規格で、2015年6月に正式に発表されました.JavaScript言語は複雑な大規模なアプリケーションを作成し、企業レベルの開発言語になることを目標としています.
ES 6は多くの機能を追加しました.もっと便利です.私たちの機能はあまり多くないです.本題に入る
ES 6新特性.png
一、変数について
ES 5
1.グローバルスコープ変数と関数スコープ変数だけがあります.「変数のリフティング」(プログラムが新しい関数に入ると、その関数内のすべての変数の宣言を関数の開始位置に置きます.変数の宣言を上げるだけで、変数の割当値は上がりません.)
ES 6新規追加:ブロックレベルスコープ変数
1、let定義ブロックレベルスコープ変数
1、変数の向上がない場合は、先に声明してから2、let声明の変数を使用して、前のlet、var、conset声明の変数と名前を変更することはできません.
{
{
//console.log(a)//
let a = 10;//
var b = "abc";//
console.log(a);//10
//let a = 10// Uncaught SyntaxError: Identifier 'a' has already been declared
console.log(b);//bac
}
console.log(b);//abc
// console.log(a);//
}
2、const定義リードオンリー変数1、const宣言変数は、同時に値を付けなければならない.const宣言の変数は初期化されなければならない.初期化が完了すると、修正は許されない.2、const宣言変数もブロックレベル作用ドメイン変数3、const声明の変数は「変数の向上」がない.先に声明を出してから4、const声明の変数は前のlet、var、const声明の変数と重複してはいけない.
{
const VERSION = "1.2.3"
console.log( VERSION )//
}
//console.log( VERSION )//VERSION is not defined
二、関数についてES 6は、モジュラス関数のデフォルト値を設定できます.
つまり、関数を呼び出すと、デフォルトのイメージが設定されていても、関数に参加しなくても、関数の実装はデフォルトのイメージです.
function fun2(a=1,b=2){
console.log(a,b)//1,2
}
fun2(11,22);//11 22
fun2(100);//100 2
コンストラクタにも使われています.function Person(name,age,sex=" "){
this.name = name;
this.age = age;
this.sex = sex;
}
var p1 = new Person(" ",20);
console.log(p1)// Person {name: " ", age: 20, sex: " "}
var p2 = new Person(" ",30);
console.log(p2)// Person {name: " ", age: 30, sex: " "}
var p3 = new Person(" ",20," ");
console.log(p3)// Person {name: " ", age: 20, sex: " "
矢印関数//
var fun3 = function(a){
console.log(a);
}
//
var fun3 = (a)=>{console.log(a);}
fun3(999);
例えば矢印関数で1から100までの和を計算します.var fun4 = ()=>{
var sum=0;
for(var i = 0; i<=100; i++){
sum = sum+i
}
return sum;
}
console.log(fun4());//1000
var person = {
name:"tom",
sayHi:()=>{
console.log(this);//window
console.log("hello,everyone. my name is "+this.name);//hello,everyone. my name is window name
}
}
person.sayHi();
thisの認識を復習します.1.関数の体外で、thisはwindowオブジェクトのことを指します.関数の中で、関数thisを呼び出した人は誰を指しますか?3.コンストラクションでは、thisは新しく作成したオブジェクトのことを指します.
三、配列に関する展開演算
配列の前に3つの点を加えます.
var arr = [1,2,3,4,5];
console.log(arr);//[1, 2, 3, 4, 5]
console.log(...arr)// 1 2 3 4 5
行列の展開に応じて演算できます.行列は関数の大量の参照に使用されます.function fun5(a,b,c,d,e,f){
// ,
//console.log(a,b,c,d,e,f)//[1, 2, 3, 4, 5] undefined undefined undefined undefined undefine
console.log(a,b,c,d,e,f)//11 22 33 44 55 66
//return a+b+c+d+e+f
}
//fun5([1,2,3,4,5])
fun5(...[11,22,33,44,55,66])
四、アプリとコールについてapplyとcallは、いずれも対象自体に属性や方法がないので、他のオブジェクトの属性や方法を引用します.つまり、どちらもthisの属性を変更できます.
異なったところ
apply(thisの指向、配列/argments)call(thisの指向、パラメータ1、パラメータ2、パラメータ3)
var name ="window name";
var obj = {
name:"obj name",
showName:function(v1,v2,v3){
console.log(v1,v2,v3)
}
}
obj.showName();
obj.showName.apply(window,[10,20,30]);//10 20 30
//apply , this
obj.showName.call(window,10,20,30)//10 20 30
var color = "yellow";
function showColor(){
console.log(this.color)
}
var obj = {
color:"red",
}
showColor();//yellow
showColor.apply(obj);//red
showColor.call(obj);//red
showColor.apply(this);//yellow
showColor.call(window);//yellow
五、構成分割について配列の解除
var [a,b,c]=[11,22,33]
console.log(a,b,c)//11 22 33
var [e,[f,g],k] = [1,[2,3],5]
console.log(e,f,g,k)//1 2 3 5
オブジェクトの割り当て値 var{name,age}={name:" ",age:"20"}
console.log(name,age)// 20
以前は二つの変数の値を交換しましたが、第三の変数を借りる必要があります. var f1 = 88;
var f2 = 99;
[f1,f2]=[f2,f1];
console.log(f1,f2)//99 88
Jsonを解体する var jike = {"name":"tom","age":"23","sex":" "};
var {name,age,sex}=jike;
console.log(name,age,sex)//tom 23
function cal(a,b){
var ret1 = a+b;
var ret2 = a-b;
var ret3 = a*b;
var ret4 = a/b;
return [ret1,ret2,ret3,ret4]
}
var [r1,r2,r3,r4] = cal(10,5);
console.log(r1,r2,r3,r4)//15 5 50 2
六、stringにincludeを入れる方法includies(「文字」)文字列の中にある文字が存在するかどうかを判断するために、trueに戻りfalseに戻ります.
includes(「文字」、startIndex)文字列の下に表示されているstartIndexがあるかどうかを判断するために使用されます.trueに戻ります.falseに戻りません.
var str = "hello";
console.log( str.includes("e") )//true
console.log( str.includes("e",3) );//false
七、オブジェクトの作成ES 5でオブジェクトを作成するいくつかの方法
1.字面量法2.工場モード3.コンストラクション4.組み合わせ方式コンストラクタ+プロトタイプモード
ES 6でオブジェクトを作成
class {
//
// , ,
constructor(){} // :
// run dark
run(){}
dark(){}
}
例をあげるclass Person{
//
constructor(name,age,sex,nativePlace){
this.name=name;// :
this.age=age;
this.sex=sex;
this.nativePlace=nativePlace;
}
//
eat(){console.log(" ")}
study(){console.log(" ")}
play(){console.log(" ")}
}
var sunShine = new Person("fanfan","22"," "," ");
console.log(sunShine)//Person {name: "fanfan", age: "22", sex: " ", nativePlace: " "}
八、継承するclass Animal{
constructor(age,sex){
this.age = age;
this.sex = sex;
}
eat(){
console.log(" ")
}
}
class Dog extends Animal{
constructor(name,age,sex){
//super , ,
super(age,sex)
//console.log(super);//
this.name=name;
}
bark(){
console.log(" ")
}
// :
// eat(){
// console.log(" ")
// }
}
var d = new Dog(" "," ",5)
console.log(d)
d.bark();
d.eat();
//ES6 , ,
console.log( Dog.prototype)//Animal {}
console.log( Dog.constructor==Animal.constructor)//true
console.log( Dog.prototype.__proto__==Animal.prototype)//true
九、セット()とMap()set()順序付きリストセット(重複なし)
Set()とは、シーケンステーブルのセット(setの要素は重複していない)のことです.
setに含まれる方法add()、has()、delete()、clear()など
アドド()追加
var s = new Set();
s.add(1);
s.add(window);
s.add(true);
s.add(1);
console.log(s);//
console.log(s.size)// 3
delete(value)指定要素の削除//
s.delete(window);
console.log(s) //1 true
console.log(s.size) //2
has(value)は、指定された値がsetセット内に存在するかどうかを判断するために、trueに戻りfalseに戻ります.//
console.log( s.has(1) )//true
clear()と一緒に空を掃除してセットします.//
s.clear()
console.log(s)//
例えば、10個の乱数を1~20個生成し、重複してはいけないことを要求します.var arr3 = new Set();
while(arr3.size<10){
var yuan = parseInt(Math.random() * (20 - 1 + 1) + 1);
arr3.add(yuan);
}
console.log(arr3)
Map()キーペアを格納するための集合key/valuevar map = new Map();
map.set("name"," ");
map.set("age",20);
console.log(map) //Map {"name" => " ", "age" => 20}
get(key)はkey値に基づいてvalueを取得する.console.log( map.get("name"))//
has()キーが存在するかどうかを判断します.trueに戻ります.いいえ、fasleに戻ります.console.log( map.has("age") ) //true
console.log( map.has("age1") ) //false
クリーン集合
map.clear();
console.log(map);//Map {}
なぜか急に止まったような感じがします.じゃ、止まってください.
いいえ、ありません
老後を拝む
老後は楽しいですね
いいえ、ありません
読者の皆様、新年おめでとうございます.いいね