Rumah hujung hadapan web tutorial js 函数调用的不同方式及this的指向详解

函数调用的不同方式及this的指向详解

Feb 06, 2018 am 09:22 AM
this berbeza Cara

一、函数的调用方式

1.作为函数,一种直接易懂的方式(即函数调用模式)。

2.作为方法,方法是连接在对象上的,被这个对象调用,这种形式就是面向对象编程。

3.作为构造器,在构造的过程中一个新的对象被创建出来。

4.经由函数的apply或者call方法。

本文主要为大家带来一篇浅谈函数调用的不同方式,以及this的指向。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。

二、函数参数

1.传入参数

(1)传入变量多于函数定义变量。

(2)函数定义变量多余传入变量,多出来的变量是undefined

2.函数在被调用的时候,隐形的传入两个参数argument和this(即argument和this被悄悄传入函数,作用在函数的作用域中)。

(1)argument:函数调用时传入函数的变量集合(有arguemnt.length属性)

eg:argument[0]指的是传入函数的第一个参数

(2)this关联一个对象。

根据调用方式的不同,this的指向也不同。因此this为调用的上下文(invocation context)。

三、this的指向

1.函数调用模式 (this->window)

这个函数并不属于任何对象的属性。

function fn1(){
 //some code
}
fn1();
或着:
var fn2=function(){
 //some code
}
fn2();
使用这种方式调用函数,函数的上下文是全局上下文(global context即window)。this->window。
Salin selepas log masuk

2.方法调用模式   (this->方法所属的对象)

这个函数是一个对象的属性,当这个函数被调用时,这个函数被视为这个对象的一个方法。

var obj={
 //some code;
};
obj.getname=function(){
 //some name
}
obj.getname();
函数的上下文是这个对象(例子中的 obj)。this->obj
Salin selepas log masuk

3.构造器调用模式 (this->创建的新对象)

函数被作为构造器调用时有以下特点:

一个新的对象被创建出来;

这个新的对象被传递给这个构造器作为this参数,也就是说这个新的对象是构造器函数的上下文;

如果没有显性的return语句,这个新的对象会被隐式的return(就是悄咪咪的被return了),并成为这个构造器的值。

function Fn(){
 this.a=function(){
   return this;
 }
}
var n=new Fn();
console.log(n.a());//Fn{a:f}
console.log(n);//fn{a:f}
//此例中,构造了一个构造函数Fn((),利用new关键字调用时一个空的对象被创建出来,并传递到函数中作为this存在。this-Fn(新的)
//这个构造器同时创建了a属性,并将此属性作为一个方法赋予给它创建出新对象的实例。
Salin selepas log masuk

4.apply()获得call()方法  (this->可以是我们指定的任何对象)

(1)apply(),两个参数。第一个参数:用于作为函数上下文的对象。第二个参数:一个参数数组。

(2)call(),两个参数。第一个参数:用于作为函数上下文的对象。第二个参数:argument list。

call()和apply()多用于函数回调。

function circle(list,calback){
 for(var i=0;i<list.length;i++){
   calback.call(list[i],i);
 }
}
var list=[&#39;a&#39;,&#39;b&#39;,&#39;c&#39;];
circle(list,function(index){
 console.log(index);//0,1,2(即传进来的i值)
 console.log(this);//a,b,c(call的第一个参数)
});
//this->call()传递进来的第一个参数。
Salin selepas log masuk

相关推荐:

mysqli批量执行多条语句和一次函数调用执行多条语句方法

微信小程序Page中data数据操作和函数调用详解

如何解决js父级函数调用子函数出现函数未定义问题

Atas ialah kandungan terperinci 函数调用的不同方式及this的指向详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah bahasa komputer yang berbeza? Apakah bahasa komputer yang berbeza? Aug 28, 2023 pm 02:25 PM

Bahasa pengaturcaraan digunakan untuk memberi arahan kepada komputer dalam bahasa yang mereka boleh fahami. Bahasa komputer terbahagi kepada tiga jenis seperti berikut: Bahasa Mesin Bahasa Simbolik Bahasa Aras Tinggi Bahasa Mesin Komputer ialah sebuah mesin. Memandangkan ingatannya hanya boleh menyimpan 1s dan 0s, arahan mesti diberikan kepada komputer dalam bentuk aliran 1s dan 0s, iaitu kod binari. Ini mudah difahami oleh mesin. Program yang ditulis dalam kod binari yang boleh dimasukkan terus ke dalam komputer untuk pelaksanaan dipanggil bahasa mesin. Kelebihan bahasa mesin termasuk: Pelaksanaan yang sangat pantas. Sukar untuk menulis dan membaca program dalam bahasa mesin. Arahan mesin sukar diingat. Bahasa simbolik juga dipanggil bahasa himpunan. Penghimpun mengandungi "mnemonik". "Mnemonik" ialah maklumat yang mudah diingati dalam bentuk singkatan. Kelebihan bahasa simbolik

Apakah kaedah pemprosesan masa dalam bahasa Go? Apakah kaedah pemprosesan masa dalam bahasa Go? Jun 10, 2023 pm 09:42 PM

Sebagai bahasa pengaturcaraan moden, bahasa Go memainkan peranan penting dalam pembangunan. Bahasa Go menyediakan beberapa fungsi dan struktur masa terbina dalam untuk menjadikan pemprosesan masa lebih mudah. Dalam artikel ini, kami akan memperkenalkan beberapa kaedah pemprosesan masa yang biasa digunakan dalam bahasa Go. time.Now() Kita boleh menggunakan fungsi time.Now() untuk mendapatkan masa semasa: now:=time.Now()fmt.Println(now) output: 2019-06-131

Bagaimana untuk mengalih keluar URL yang tidak diingini daripada bar alamat Chrome? Bagaimana untuk mengalih keluar URL yang tidak diingini daripada bar alamat Chrome? Mar 08, 2024 am 09:19 AM

Chrome akan merekodkan URL yang telah dimasukkan secara automatik dalam bar alamat dan secara automatik akan "mengaitkan kandungan pertanyaan" pada masa hadapan, tetapi sering kali kita tidak memerlukan beberapa URL, bagaimana untuk memadamkannya? Editor sering menghadapi masalah ini Alamat yang telah dimasukkan sebelum ini akan disekat di hadapan alamat yang biasa digunakan, menyebabkan keperluan untuk memilih beberapa kali untuk memasuki laman web yang dikehendaki. Saya telah mencari cara untuk memadamnya sekurang-kurangnya tiga kali kerana... saya lupa setiap kali. Dalam pintasan bar alamat pintasan papan kekunci Chrome bantuan rasmi Chrome, kekunci pintasan padam dijelaskan: ▍Windows memadamkan kandungan perkaitan bar alamat Tekan kekunci anak panah ke bawah untuk menyerlahkan kandungan yang sepadan dan kemudian tekan kekunci Shift+Delete ▍macOS. memadamkan alamat Bar perkaitan kandungan klik ke bawah

Artikel untuk memahami panduan ini dan mengejar 70% orang hadapan Artikel untuk memahami panduan ini dan mengejar 70% orang hadapan Sep 06, 2022 pm 05:03 PM

Seorang rakan sekerja tersekat kerana pepijat yang ditunjukkan oleh masalah penunjuk Vue2 ini menyebabkan fungsi anak panah digunakan, mengakibatkan ketidakupayaan untuk mendapatkan prop yang sepadan. Dia tidak tahu apabila saya memperkenalkannya kepadanya, dan kemudian saya sengaja melihat kumpulan pertukaran bahagian hadapan Setakat ini, sekurang-kurangnya 70% pengaturcara bahagian hadapan masih tidak memahaminya anda pautan ini. Jika semuanya tidak jelas saya belum belajar bagaimana untuk melakukannya, sila berikan saya mulut yang besar.

Bagaimana untuk menetapkan titik pemulihan dalam win7 Bagaimana untuk menetapkan titik pemulihan dalam win7 Jul 20, 2023 am 10:33 AM

Sistem win7 ialah sistem pengendalian tradisional Microsoft dan mempunyai banyak fungsi praktikal, seperti fungsi titik pemulihan sistem win7. Dengan menetapkan titik pemulihan dalam win7, anda boleh memulihkan sistem kepada titik pemulihan dalam win7 untuk mencapai tujuan pembaikan sistem. Bagaimana untuk menetapkan titik pemulihan dalam win? Editor berikut akan mengajar anda cara menetapkan titik pemulihan dalam win7. Bagaimana untuk menetapkan titik pemulihan dalam win7 1. Cari pintasan desktop, klik kanan dan pilih Properties. 2. Selepas memasukkan tetapan harta, pilih Konfigurasi Sistem Lanjutan. 3. Pilih pilihan penyelenggaraan sistem dalam kotak sifat sistem pop timbul. 4. Klik Sekarang untuk mencipta titik pemulihan bagi pengawal dengan perlindungan sistem dihidupkan. 5. Tambah perihalan titik pemulihan, kemudian klik Cipta, tunggu dengan sabar sebentar, titik pemulihan berjaya ditubuhkan, dan kemudian klik Tutup Anda boleh memulihkan sistem pada masa akan datang.

Membandingkan pautan dan import: Apakah perbezaannya? Membandingkan pautan dan import: Apakah perbezaannya? Jan 06, 2024 pm 08:23 PM

Perdebatan pautan lwn. import: Apakah perbezaannya? Dalam pembangunan dan pengaturcaraan, kita sering perlu berinteraksi dengan fail atau modul lain. Untuk mencapai interaksi ini, memaut dan mengimport adalah dua kaedah yang biasa digunakan. Walau bagaimanapun, ramai orang mungkin tidak tahu perbezaan antara pautan dan import dan masa untuk menggunakannya. Artikel ini akan memperkenalkan perbezaan antara pautan dan import secara terperinci dan memberikan contoh kod. Pertama, mari kita fahami konsep pautan. Pautan

Mari kita bincangkan mengapa Vue2 boleh mengakses atribut dalam pelbagai pilihan melalui ini Mari kita bincangkan mengapa Vue2 boleh mengakses atribut dalam pelbagai pilihan melalui ini Dec 08, 2022 pm 08:22 PM

Artikel ini akan membantu anda mentafsir kod sumber vue dan memperkenalkan sebab anda boleh menggunakan ini untuk mengakses sifat dalam pelbagai pilihan dalam Vue2. Saya harap ia akan membantu semua orang.

Bagaimana untuk memadam kaedah input win10 Bagaimana untuk memadam kaedah input win10 Pengenalan terperinci Bagaimana untuk memadam kaedah input win10 Bagaimana untuk memadam kaedah input win10 Pengenalan terperinci Jul 07, 2023 pm 05:33 PM

Kaedah input win10 telah mencapai kemajuan yang besar berbanding dengan versi sistem sebelumnya, dan mempunyai banyak fungsi yang sangat berguna Ia juga sangat lancar untuk digunakan secara keseluruhan dan mempunyai fungsi menaip memori Namun, sesetengah pengguna sudah mempunyai kaedah input mereka sendiri Untuk digunakan. Sekarang, jika anda ingin memadam kaedah input win10 terbina dalam, bagaimana anda memadam kaedah input win10 Hari ini saya akan memberitahu anda butiran tentang cara memadam kaedah input win10? Cara memadam kaedah input dalam win10 1. Tekan [Win+i] untuk membuka antara muka tetapan, dan klik pada pilihan "Masa dan Bahasa". 2. Klik "Wilayah dan Bahasa" dan klik butang "Pilihan" di bawah "Bahasa Cina" di sebelah kanan. 3. Klik pilihan "Microsoft Pinyin Alphabet" dan butang "Padam" akan muncul.

See all articles