ホームページ >ウェブフロントエンド >jsチュートリアル >電話して申し込む場合のポイントはこちら
今回は、このポインターを呼び出しと適用で使用する方法についての注意事項と、このポインターを呼び出しと適用で使用する場合の
注意事項を実際のケースでお届けしますので、一緒に見てみましょう。
1. 関数が通常の関数として呼び出された場合、this はグローバル オブジェクト
を指します。関数がオブジェクトのメソッドとして呼び出された場合、this はオブジェクト
を指します。これはコンストラクターとして、新しく作成されたオブジェクト
を指します。 例 1:window.name = 'myname';
function getName() {
console.log(this.name);
}
getName(); //输出myname
var boy = {
name: 'Bob',
getName: function() {
console.log(this.name);
}
}
boy.getName(); //输出Bob
function Boy(name) {
this.name = name;
}
var boy1 = new Boy('Bob');
console.log(boy1.name); //输出Bob
例 3 には、別の特殊なケースがあります。
が「return」を通じて戻るとき オブジェクトが使用されている場合、この操作の最終結果は新しく作成されたオブジェクトではなく、このオブジェクトを返すため、この場合は役に立ちません。
例 4:function Boy(name) {
this.name = name;
return { //返回一个对象
name: 'Jack'
}
}
var boy1 = new Boy('Bob');
console.log(boy1.name); //输出Jack
function Boy(name) {
this.name = name;
return 1; //返回非对象
}
var boy1 = new Boy('Bob');
console.log(boy1.name); //输出Bob
call と apply の役割
apply は、関数本体内の this のポインターを指定し、 2 番目のパラメーター パラメーターは、呼び出される
関数のパラメーターのリストを渡すために使用される配列または配列に似たものです。
例 1:function getInfo() { console.log(this.name+' like '+arguments[0]+' and '+arguments[1]); } var boy1 = { name: 'Bob', age: 12 } getInfo.apply(boy1,['sing','swimming']); //输出Bob like sing and swimming
call 渡されるパラメータの数は固定ではありません。 apply と同様に、最初のパラメータは、2 番目のパラメータから始まり、関数本体での this のポインタを指定するために使用されます。パラメータは呼び出された関数に順番に渡されます。
例 2:function getInfo() { console.log(this.name+' like '+arguments[0]+' and '+arguments[1]); } var boy1 = { name: 'Bob', age: 12 } getInfo.call(boy1,'sing','shopping'); //输出Bob like sing and shopping
さらに、ほとんどの高度なブラウザーは、bind メソッドも実装しています。call および apply との違いは、bind は関数内で this のポインターを変更するだけで、すぐには実行されないことです。明示的に呼び出す必要があります。
例 3: ブラウザのバインドメソッドのシミュレーションFunction.prototype.bind = function(obj){
var self = this;
return function(){
return self.apply(obj,arguments);
}
};
var obj = {
name: 'Bob',
age: 12
};
var func = function(){
console.log(this.name+' like '+arguments[0]+' and '+arguments[1]);
}.bind(obj);
func('sing','shopping');
これを失いました
場合によっては、this へのポインタが失われることがあります。このとき、変更するには call、apply、bind を使用する必要があります。それ の指摘問題。 例 1: "getName" メソッドが "boy" オブジェクトのプロパティとして呼び出される場合、別の変数が "getName" メソッドを
参照する場合、これは "boy" オブジェクトを指します。通常の関数、this グローバルオブジェクトの window を指すvar boy = { name: 'Bob', getName: function() { console.log(this.name); } } boy.getName(); //输出Bob var getBoyName = boy.getName; getBoyName(); //输出undefined例 2: 関数内で関数が定義されていても、通常のオブジェクトとして呼び出された場合、これも window オブジェクトを指すことになります
var boy1 = { name: 'Bob', age: 12, getInfo: function() { console.log(this.name); function getAge() { console.log(this.age); } getAge(); } } boy1.getInfo(); //Bob //undefinedマスターできたと思いますこの記事の事例を読んだ後は、中国の Web サイトのその他の関連記事に注目してください。 推奨読書:
著作権関連のヘッダーとテールを追加するjqueryフルページプラグイン
Webpackのパッケージ化とjsとcssの圧縮の手順の詳細な説明
以上が電話して申し込む場合のポイントはこちらの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。