これは JavaScript のキーワードであり、関数がさまざまな状況で使用されると、この値は変化します。ただし、常に原則があり、これは関数を呼び出すオブジェクトを参照します。
これは通常、現在の呼び出し先を指しますが、他の方法でも変更できます:
1. 呼び出しが継承として使用される場合:
function Parent(age){ this.name=['mike','jack','smith']; this.age=age; } function Child(age){ Parent.call(this,age);//把this指向Parent,同时还可以传递参数 } var test=new Child(21); console.log(test.age);//21 console.log(test.name); test.name.push('bill'); console.log(test.name);//mike,jack,smith,bill
2. call と apply はどちらもこの点を に変更できますが、apply の 2 番目のパラメーターはハッシュ分布であり、call は配列にすることができます
console.log(Math.max.apply(null,[1,2,3,4]));//4
メソッドの場合、最初のパラメーターは変更されない this の値です。変更されるのは、残りのパラメーターが関数に直接渡されることです。つまり、call() メソッドを使用する場合、関数に渡されるパラメータを 1 つずつ列挙する必要があります。
3.ES5 は、関数のインスタンスを作成するメソッド :bind() も定義しており、その this 値は、bind() 関数に渡される値にバインドされます。たとえば、
window.color='red'; var o={color:'blue'}; function sayColor(){ console.log(this.color); } var objectSaycolor=sayColor.bind(o); //var objectSaycolor=sayColor.bind(); objectSaycolor();//blue
callメソッド:
説明:
call メソッドを使用すると、別のオブジェクトの代わりにメソッドを呼び出すことができます。 call メソッドは、関数のオブジェクト コンテキストを初期コンテキストから thisObj で指定された新しいオブジェクトに変更します。applyメソッド:
構文: apply(thisObj, [argArray])定義: 特定のオブジェクトのメソッドを適用し、現在のオブジェクトを別のオブジェクトに置き換えます。 注: argArray が有効な配列でない場合、または引数オブジェクトではない場合、TypeError が発生します。 argArray も thisObj も指定されていない場合は、Global オブジェクトが thisObj として使用され、パラメーターを渡すことはできません。
function Animal(name) { this.name = name; this.showName = function() { console.log(this.name); }; } function Cat(name) { Animal.call(this, name); } Cat.prototype = new Animal(); function Dog(name) { Animal.apply(this, name); } Dog.prototype = new Animal(); var cat = new Cat("Black Cat"); //call必须是object var dog = new Dog(["Black Dog"]); //apply必须是array cat.showName(); dog.showName(); console.log(cat instanceof Animal); console.log(dog instanceof Animal);
以上がJavaScriptでこのキーワードを変更する方法例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。