js函數(shù)和this用法實(shí)例分析
本文實(shí)例講述了js函數(shù)和this用法。分享給大家供大家參考,具體如下:
js的所有代碼都是由funtion組成,funtion即函數(shù)的類型。
一.函數(shù)有兩種寫法
-----1.定義式
function test() { //定義一個(gè)函數(shù) console.log('function test called!!');}
-----2.變量式
var test2 = function () { console.log('var test2 function called!!');};
我們可以調(diào)用typeof()查看類型
var type = typeof(test2);console.log(type); //function
二.函數(shù)也是對(duì)象
-----1.函數(shù)既然是對(duì)象,即就可以有屬性和功能。函數(shù)也可以動(dòng)態(tài)的增加屬性,如下:
function test() { console.log('function test() called!!!');}test.user_name = 'zhangsan';console.log(test.user_name); //zhangsan
三.函數(shù)的實(shí)例化
函數(shù)的實(shí)例化也有兩種方式:
---------1.直接在函數(shù)名后面加上'()' @@@@@常用這種方式
function test() { console.log('function test() called!!!');}test(); //function test() called!!!
---------2.使用關(guān)鍵字'new'進(jìn)行實(shí)例化
function test() { console.log('function test() called!!!');}new test(); //function test() called!!!
四.this機(jī)制
//=====================this機(jī)制==================function my_func(rhs, lhs) { console.log(this, rhs, lhs);} //顯示不確定的this//my_func(); //console顯示 //--------------顯示傳遞this-----------//函數(shù)名.call(this,參數(shù)...) 顯示傳遞thismy_func.call({ 0: 'jade' }, 2, 3);//------------------------------------ var tools = { my_func: my_func,}; //表.key() --->this是表tools.my_func(2, 3); //this是tools// 相當(dāng)于tools.my_func.call(tools, 2, 3); //強(qiáng)制綁定this,優(yōu)先級(jí)最高//函數(shù).bind,不會(huì)改變?cè)瓉?lái)函數(shù)對(duì)象的this,而是會(huì)產(chǎn)生一個(gè)新的臨時(shí)的對(duì)象//bind好了thisvar new_func = my_func.bind({ name: 'jade' });new_func(3, 4); tools.my_func = new_func;tools.my_func(3, 4); //this是表{name:'jade'}my_func(3, 4); //this不變,consloe //====call與bind有什么區(qū)別呢?==//bind最牛的地方是什么?是綁定this的時(shí)候,//不是由調(diào)用者來(lái)決定的 new_func.call({ 0: 1 }, 3, 4); //this還是表{name:'jade'},不是{0:1} //==================總結(jié)=============================//在函數(shù)里面訪問(wèn)this,this是由調(diào)用的環(huán)境來(lái)決定的,不確定,一般不使用//1.顯示的傳遞this,函數(shù).call(this對(duì)象,參數(shù))//2.隱式的傳遞this,表.key_函數(shù)(參數(shù)),this---》表//3.bind優(yōu)先級(jí)別是最高的
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript常用函數(shù)技巧匯總》、《javascript面向?qū)ο笕腴T教程》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章:
1. React+umi+typeScript創(chuàng)建項(xiàng)目的過(guò)程2. ASP調(diào)用WebService轉(zhuǎn)化成JSON數(shù)據(jù),附j(luò)son.min.asp3. php測(cè)試程序運(yùn)行速度和頁(yè)面執(zhí)行速度的代碼4. php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究5. ASP.NET Core 5.0中的Host.CreateDefaultBuilder執(zhí)行過(guò)程解析6. 無(wú)線標(biāo)記語(yǔ)言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)第1/2頁(yè)7. Warning: require(): open_basedir restriction in effect,目錄配置open_basedir報(bào)錯(cuò)問(wèn)題分析8. ASP中常用的22個(gè)FSO文件操作函數(shù)整理9. SharePoint Server 2019新特性介紹10. 三個(gè)不常見(jiàn)的 HTML5 實(shí)用新特性簡(jiǎn)介
