javascriptの中のthis、JSの中でthisのいくつかの基本的な方向
4466 ワード
要旨:javascriptの中のthisは比較的に柔軟で、要約して4種類のタイプになります.
1.thisは、現在この関数を呼び出すオブジェクトを指します.
例:
例えば:
例:
4.関数コンストラクタのthis
例(1):
例(2)
5.callとappyの中のthis
callおよびappyは、関数の役割を変更するオブジェクトに使用することができ、以下の例で説明する.
例(2):
6.bindとthis
bindは同様に関数の作用の対象を変えることができる.例:
1.thisは、現在この関数を呼び出すオブジェクトを指します.
例:
function test(){
console.log(this)
}
//
test()// window, nodejs global
2 thisはオブジェクトの属性を指します.例えば:
var test={
x:1,
y:2
z:function(){
console.log(this.x);
}
}
// z , X:1, this test
3.原型チェーン上のthis例:
var o={
f:function test(){
return this.x+this.y
}
}
var m=Object.create(o);
m.x=1;
m.y=2;
console.log(o.f)// 3
ここではm=Object.createを通じて空いているオブジェクトを作成し、m.protoはオブジェクトoを指します.4.関数コンストラクタのthis
例(1):
function test(){
this.x=1;
};
var o=new test();
console.log(o.x) // 1
プロトはtest.prototypeを指していますが、function test(){}の戻り値がベースタイプまたは空の場合、new test()の方式で戻ってくるのは自分です.例(2)
function test(){
this.x=1;
return {x:2}
}
var o=new test();
console.log(o.x)// 2
ここでfunction test(){}の中から一つのオブジェクトが戻ったら、new方式で作成した空のオブジェクトがこのオブジェクトに向けられますので、出力のo.xは2です.5.callとappyの中のthis
callおよびappyは、関数の役割を変更するオブジェクトに使用することができ、以下の例で説明する.
function add(c,d){
return this.a+this.b+c+d
};
var o={a:1,b:2};
add.call(o,3,4);// 10
コールによって、コール関数のオブジェクトが変更されました.すなわち、thisが変更されました.その後、コールの後、二つのパラメータがc、dに入ってきて、新しい値10が得られます.例(2):
function add(c,d){
return this.a+this.b+c+d;
}
var o={a:1,b:2};
add.apply(o,[3,4]);// 10
applyはcallと同じように、関数の呼び出しオブジェクトを変更することもできます.callとappyの違いは、callのフィードバック形式が一般的な形式でパラメータを伝達することです.6.bindとthis
bindは同様に関数の作用の対象を変えることができる.例:
function test(){
return this.x;
}
var g=test.bind({x:1});
g();// 1