jsのcallの使い方と使い方をまとめました.

2143 ワード

各関数は、引継ぎではない2つの方法を含む.
JavaScriptでは、call/applyの役割は:
1.同じ点:thisの方向を変えることです.
2.違い:後から伝わるパラメータの形式が違います.
コール()方法の使用例:
function Person(name,age){


    	//this == obj
    
    	this.name = name;
    	this.age = age;
    }
    var person = new Person('deng',100);

    var obj = {

    }
    Person.call(obj,'cheng',300);
    //       
callの役割は、Person()のthisの指向を変えて、this=obj、this=name=>name–obj.name this.age=age–obj.ageを再度空の対象objに戻すことです.
var obj = {
           obj.name = name;
           obj.age = age;
    }
今のように、機能が十公备されている職場のPersonがあります.そして、空いている職場のObjを作ります.そして、ObjはPersonの中の機能をコピーします.そうすると、callを使ってPerson()の中のthisの方向を変えて、コピー機能や方法を行います.persocalにobjの空いているオブジェクトが入ってきます.objはthisに取って代わります.その後、その後ろのパラメータはthisの属性nameとageに取って代わられます.他の人の方法を利用して自分の機能を実現します.他の人の関数を借りて、perosnの構造関数を借りて自分の機能を構築します.
例をあげる
function Person(name,age,sex){
    	this.name = name;
    	this.age = age;
    	this.sex = sex;
    }
    function Student(name,age,sex,tel,grade){
    	this.name = name;
    	this.age = age;
    	this.sex = sex;
    	this.tel = tel;
    	this.grade = grade;
    }
    var student = new Student('sunny',123,'male',139,2017);
二つのコンストラクション関数を作成します.Person()とStudent()はこの二つの関数は三つの属性が同じで、機能のコピーをcallで実現できます.
 function Person(name,gae,sex){
    	this.name = name;
    	this.age = age;
    	this.sex = sex;
    }
    function Student(name,age,sex,tel,grade){
    	// var this = {name:"",age :"", sex:""}
    	Person.call(this,name,age,sex);
    	this.tel = tel;
    	this.grade = grade;
    }
    var student = new Student('sunny',123,'male',139,2017);




 // Person.call(this,name,age,sex)-->this.name = name;
        	                          this.age = age;
                                     this.sex = sex;
なぜPerson.call(this,name,age,sex)はこの3つの属性と同じですか?newを作成する時、構造関数の内部に暗黙的なthis–var this={}が存在します.Studentの中のthisはPerson内部のthisの方向を変えて、自分のthisを指してコピーを実現します.
applyの機能はcallの機能と同じです.ただ、applyの中には行列callが必要です.実際の参参を形の個数に合わせてapplyに送る必要があります.argmentsを送る必要があります.