JavaScriptは、このポインタの注意事項を変更します

REVIEW:

この用法は確かに我々はすべて知っている、これは私だけに、私を呼び出すために誰が理解することは簡単です。

記事では、このような呼び出しを使用するなど、一般的に、我々はこの方法のポイントを変更するために導入されている説明し、適用されます、バインド

しかし、非常に厳格にこの文に発言権をテストした後。

この指示の詳細については

例えば

var obj = {
    name:'vicer'
}

function person(){
    console.log(this.name)
}

person.call(obj)    

ここでは、印刷をすることを見ることは容易である{name: "vicer"}。
ことは、この点を変更したことではないでしょうか?どのように厳格に行います。私たちは、その後、見下します

私たちは、コードの1行を追加します。

var obj = {
    name:'obj'
}

function person(){
    this.currentname = 'person'
    console.log(this)
}

person.call(obj)   

このとき、この印刷は、この誰ですか?

{name: "obj", currentname: "person"}

二つのこのポイントは()を適用する場合、)(呼び出しを使用するので、ここでは、プリントアウトし、バインド()されている、彼らはされてこれにポイントを追加(変更をしていない)
唯一の違いは唯一の異なる用途です。

別のケースでは、のは、直接コードを見てみましょう

var obj = {
    name:'obj'
}

function person(){
    this.name = 'person'
    console.log(this)
}

person.call(obj)   

この時点で、印刷の優先順位は、この中の人物である、そこに推測されていない、この名前に2つあります

{currentname: "person"}

コール、適用、バインドの違い

ここでの違いについて教えてくださいするには

  1. パラメータは、コールバックを渡されると、パラメータはカンマで区切られました

    var obj = {
        name: 'vicer'
    }
    
    function person(height, age) {
        console.log('名字:'+this.name)
        console.log('身高'+height)
        console.log('年龄'+age)
    }
    
    person.call(obj, 185, 18)
    //名字:vicer
    //身高185
    //年龄18
  2. 唯一の方法は、配列を渡す際にバックパスパラメータが適用されます

    person.apply(obj, [185, 18])
  3. バインドコンマで区切って入ってくるのパラメータは、また、配列を渡すことができますが、必要性は、これを変更するために動員するためのイニシアチブを取るために

    var p = person.bind(obj, 185, 18);
    p();

おすすめ

転載: www.cnblogs.com/lovecode3000/p/12401874.html