矢印のJS機能

今日では、あなたとJSでの矢印の知識共有機能。

1つの矢印機能

1.これを結合しない
矢印機能が表示される前に、それぞれの新しい機能は、この値の独自の定義を持っています

var myObject = {
value:1,
getValue:function(){
console.log(this.value)
},
double:function(){
return function(){
console.log(this.value = this.value * 2);
}
}
}
myObject.double()();  //希望value乘以2
myObject.getValue();  //1

このECMAscript5で解決するために変数に代入されます。

var myObject = {
value:1,
getValue:function(){
console.log(this.value)
},
double:function(){
var that = this;
return function(){
console.log(that.value = that.value * 2);
}
}
}

myObject.double()();  //2
myObject.getValue();  //2

また、使用することもバインド関数、所望の値は、このダブル()関数に送信されることができます。

var myObject = {
value:1,
getValue:function(){
console.log(this.value)
},
double:function(){
return function(){
console.log(this.value = this.value * 2);
}.bind(this)
}
}
myObject.double()();  //2

myObject.getValue();  //2

予想通り、矢印この値のコンテキストで機能キャプチャそれを、独自の、この値は、その次のコードが実行されます。

var myObject = {
value:1,
getValue:function(){
console.log(this.value)
},
double:function(){
//回调里面的 `this` 变量就指向了期望的那个对象了

return ()=>{
console.log(this.value = this.value * 2);
}
}
}
myObject.double()();
myObject.getValue();

2.(呼び出しを使用)及び()コール適用
のみ)、これは、時間の関数呼び出しによって、結合の字句レベルで完了しているので、呼び出し(によって渡されたパラメータのみを)または(適用され、この上に影響を及ぼしません。

var myObject = {
value:1,
add:function(a){
var f = (v) => v + this.value;
return f(a);
},
addThruCall:function(a){
var f = (v) => v + this.value;
var b = {value:2};
return f.call(b,a);
}
}
console.log(myObject.add(1));    //2
console.log(myObject.addThruCall(1));    //2

3.矢印機能は、解決するための...残りのパラメータに置き換えることではなく、バインド引数を行います

var foo = (...args) => {
return args[0]
}
console.log(foo(1))    //1

new演算子を使用して4.
矢印コンストラクタ関数は、一緒に新しいと、使用することはできない、とエラーがスローされます。

var Foo = () => {};
var foo = new Foo();  //Foo is not a constructor

prototypeプロパティは、
プロトタイプのプロパティなしで関数を矢印します。

var foo = () => {};
console.log(foo.prototype) //undefined

6.リテラルは、単にオブジェクトを返すことはできません。

var func = () => {  foo: 1  };
// Calling func() returns undefined!

var func = () => {  foo: function() {}  };
// SyntaxError: function statement requires a name

//如果要返回对象字面量,用括号包裹字面量
var func = () => ({ foo: 1 });

結合のこのメソッドが定義されていない7矢印関数

var obj = {
value:1,
add:() => console.log(this.value),
double:function(){
console.log(this.value * 2)
}
}
obj.add();  //undefined
obj.double(); //2

8.機能矢印をラップすることはできません

var func = ()
=> 1; // SyntaxError: expected expression, got '=>'

矢印のJS機能について、あなたはどのくらいを学びますか?コメントは、コメント領域に歓迎されています!

公開された180元の記事 ウォン称賛13 ビュー7168

おすすめ

転載: blog.csdn.net/weixin_45794138/article/details/104883391