this指向の理解について
3343 ワード
thisの理解 thisはJavaScript言語の一つのキーワードであり、関数が異なる場合、thisの指向は変換されますが、いつまでも変わらないのは、呼び出された関数の対象 です.は、thisがグローバルオブジェクト に向けられていることを証明する.関数を対象とする方法で呼び出すと、thisはこの上位オブジェクトを指す. 構築関数として呼び出されると、thisはこの新しいオブジェクト を指す.
アプリとコール call()方法は、いくつかのパラメータのリストを受け入れる一方、appy()方法は、複数のパラメータを含む配列 を受け入れる. call()メソッドは、指定されたthis値といくつかの指定されたパラメータ値を使用して、関数または方法を呼び出します.Funtion.prototype.call(). appyとcallは全部Funtions.prototypeの方法です.両方は、関数動作のコンテキスト、すなわち関数内部thisの指向性を変更するための である. appy()、call()のパラメータが空の場合は、デフォルトでグローバルオブジェクト を呼び出します.
参考:MDN
function f1(){
this.a=1;
console.log(this.a)
}
f1()
var a=0;
function f2(){
this.a=10;
}
f2();
console.log(a)//0
/* * var , ( ), * a=0 this.a=10 */
var obj={
name: 'swatch17',
age: 23,
f3: function(){
console.log(this.name)
}
}
obj.f3()
/* this obj*/
function f4(){
this.a=6;
}
var four=new f4()
f4();// this ;
console.log(four.a)// this four;
アプリとコール
function team(){}
team.prototype={
club : 'Livepool',
say:function(){console.log('My home team is ' + this.club );}
}
var fansA=new team;
fansA.say()//My home team is Liverpool
// apply call this
fansB = {club:'Chelsea'}
fansA.say.apply(fansB)//My home team is Chelsea
fansA.say.call(fansB)//My home team is Chelsea
/* this fansB*/
参考:MDN