Bagaimanakah JavaScript mengubah penunjuk ini? Analisis ringkas tiga kaedah

青灯夜游
Lepaskan: 2022-09-19 09:57:53
ke hadapan
2943 orang telah melayarinya

JavaScriptBagaimana untuk menukar penunjuk ini? Artikel berikut akan memperkenalkan kepada anda tiga kaedah untuk menukar penunjuk ini dalam JS. Saya harap ia akan membantu anda!

Bagaimanakah JavaScript mengubah penunjuk ini? Analisis ringkas tiga kaedah

1 Ini menunjukkan kepada

Klik untuk membuka video untuk penjelasan lebih terperinci

this随处可见,一般谁调用,this就指向谁。this在不同环境下,不同作用下,表现的也不同。
Salin selepas log masuk

Dalam situasi berikut, ini menunjuk ke tetingkap

1 Di bawah kesan global, ini menghala ke tetingkap

console.log(window);
console.log(this);
console.log(window == this); // true
Salin selepas log masuk

2. Apabila fungsi dipanggil secara berasingan, bahagian dalam fungsi ini juga menghala ke tetingkap

function fun() {
   console.log('我是函数体');
   console.log(this);  // Window 
}
fun();
Salin selepas log masuk

3 tetingkap

function fun1() {
    function fun2() {
        console.log('我是嵌套函数');
        console.log(this);  // Window
    }
    fun2();
}
fun1();
Salin selepas log masuk

4. Bahagian dalaman ini dalam fungsi pelaksanaan penalaan kendiri (pelaksanaan segera) juga menghala ke tetingkap

(function() {
    console.log('立即执行');
    console.log(this);   // Window
})()
Salin selepas log masuk

Apa yang memerlukan perhatian tambahan ialah :

    Ini dalam pembina digunakan untuk menentukan ahli (sifat dan kaedah) untuk kelas
  • Tiada ini dalam fungsi anak panah. Jika ada, Maka ini akan dicari dalam fungsi atas sehingga tetingkap

2. Tukar ini kepada

1. kaedah panggil()

call() 方法的第一个参数必须是指定的对象,然后方法的原参数,挨个放在后面。
(1)第一个参数:传入该函数this执行的对象,传入什么强制指向什么;
(2)第二个参数开始:将原函数的参数往后顺延一位
Salin selepas log masuk

Penggunaan: nama fungsi.panggilan()

function fun() {
    console.log(this);  // 原来的函数this指向的是 Window
}
fun();
 
function fun(a, b) {
    console.log(this); // this指向了输入的 字符串call
    console.log(a + b);
}
//使用call() 方法改变this指向,此时第一个参数是 字符串call,那么就会指向字符串call
fun.call('call', 2, 3)  // 后面的参数就是原来函数自带的实参
Salin selepas log masuk

2. kaedah apply()

apply() 方法的第一个参数是指定的对象,方法的原参数,统一放在第二个数组参数中。
(1)第一个参数:传入该函数this执行的对象,传入什么强制指向什么;
(2)第二个参数开始:将原函数的参数放在一个数组中
Salin selepas log masuk

Penggunaan: Nama fungsi.apply()

function fun() {
    console.log(this);  // 原来的函数this指向的是 Window
}
fun();
 
function fun(a, b) {
    console.log(this); // this指向了输入的 字符串apply
    console.log(a + b);
}
//使用apply() 方法改变this指向,此时第一个参数是 字符串apply,那么就会指向字符串apply
fun.apply('apply', [2, 3])  // 原函数的参数要以数组的形式呈现
Salin selepas log masuk

3. kaedah bind()

bind() 方法的用法和call()一样,直接运行方法,需要注意的是:bind返回新的方法,需要重新
调用
是需要自己手动调用的
Salin selepas log masuk

Penggunaan: nama fungsi.bind()

function fun() {
    console.log(this);  // 原来的函数this指向的是 Window
}
fun();
 
function fun(a, b) {
    console.log(this); // this指向了输入的 字符串bind
    console.log(a + b);
}
//使用bind() 方法改变this指向,此时第一个参数是 字符串bind,那么就会指向字符串bind
let c = fun.bind('bind', 2, 3);
c(); // 返回新的方法,需要重新调用
// 也可以使用下面两种方法进行调用
// fun.bind('bind', 2, 3)();
// fun.bind('bind')(2, 3);
Salin selepas log masuk
[Berkaitan cadangan:

tutorial video javascriptVideo Pengaturcaraan Asas

Atas ialah kandungan terperinci Bagaimanakah JavaScript mengubah penunjuk ini? Analisis ringkas tiga kaedah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:cnblogs.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan