jsのcallの使い方と使い方をまとめました.
2143 ワード
各関数は、引継ぎではない2つの方法を含む.
JavaScriptでは、call/applyの役割は:
1.同じ点:thisの方向を変えることです.
2.違い:後から伝わるパラメータの形式が違います.
コール()方法の使用例:
例をあげる
applyの機能はcallの機能と同じです.ただ、applyの中には行列callが必要です.実際の参参を形の個数に合わせてapplyに送る必要があります.argmentsを送る必要があります.
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を送る必要があります.