これをjsでどうするかは初心者には難しい問題だと思いますが、しっかり理解していれば問題ないので、以下で説明していきます。
JS では、this の値は呼び出しモード (呼び出しオブジェクト) によって異なり、JS には 4 つの呼び出しモードがあります。
1. 関数呼び出しモード
関数がオブジェクトのプロパティではない場合は関数として呼び出されますが、このとき関数内のthisはグローバルオブジェクト(対数が大きい場合はウィンドウ)を指します。
window.dragon=1;
function getDragon(){
console.log(this.dragon);
}
getDragon();//输出1,此时的this指向window
2. メソッド呼び出しモード
関数がオブジェクトのプロパティである場合、それをオブジェクトのメソッドと呼び、メソッドが呼び出されるとき、これはオブジェクトを指します。
このモードでは、メソッドが呼び出されたときにこのオブジェクトのバインドが発生します。
var obj={
dragon:2,
getDragon:function(){
console.log(this.dragon);//输出2,this指向Obj
}
}
obj.getDragon();
3. コンストラクター呼び出しモード
newで呼び出される関数をコンストラクタ関数と呼びますが、このときのポイントはコンストラクタ関数でインスタンス化されるオブジェクトです。
function main(val){
this.dragon=val;
}
main.prototype.getDragon=function(){
console.log(this.dragon);
}
var fun=new main(3);
fun.getDragon();
fun.dragon;//输出3,this指向main的实例对象fun
4.apply/call呼び出しモードとバインド
apply、call、bind メソッドを使用すると、呼び出し元の this が誰を指すかを設定できます。
function showDragon(){
console.log(this.dragon);
}
var obj={
dragon:4
}
showDragon.call(obj)//输出4,this指向了obj对象
ES5 のバインド メソッドの具体的な使用方法については、Google で検索できます。このバインディングの使用例は次のとおりです。
function showDragon(){
console.log(this.dragon);
}
var obj={
dragon:4
}
var showDragon2=showDragon.bind(obj);
showDragon2()//输出4,this指向了obj对象
バインドには多くの使用法があるので、自分で確認できます
上記の決まり文句の js の要点は、編集者によって共有された内容がすべてであるため、不備があれば批判して修正することができます。。