JavaScript中this的9種應(yīng)用場景及三種復(fù)合應(yīng)用場景
【場景1】全局環(huán)境中的this指向全局對象
this.a = 10; alert(a);//10 b = 20; alert(this.b);//20 var c = 30; alert(this.c);//30
【場景2】對象內(nèi)部函數(shù)的this指向調(diào)用函數(shù)的當(dāng)前對象
var a = 10; var bar = { a: 20, test: function(){ alert(this.a); } } bar.test();//20
【場景3】全局環(huán)境函數(shù)的this指向全局對象
var a = 10; function foo(){ alert(this.a); } foo();//10
【場景4】匿名函數(shù)中的this指向全局對象
var a = 10; var foo = { a: 20, fn: (function(){ alert(this.a); })() } foo.fn//10
【場景5】setInterval和setTimeout定時(shí)器中的this指向全局對象
var a = 10; var oTimer1 = setInterval(function(){ var a = 20; alert(this.a);//10 clearInterval(oTimer1); },100);
【場景6】eval中的this指向調(diào)用上下文中的this
(function(){ eval("alert(this)");//[object Window] })(); function Foo(){ this.bar = function(){ eval("alert(this)");//[object Object] } } var foo = new Foo(); foo.bar();
【場景7】構(gòu)造函數(shù)中的this指向構(gòu)造出的新對象
function Person(name,age){ this.name = name; this.age = age; this.sayName = function(){ alert(this.name); } } var p1 = new Person('lily','20'); p1.sayName();//'lily'
【場景8】new Function中的this指向全局對象
(function(){ var f = new Function("alert(this)"); f();//[object Window] })(); function Foo(){ this.bar = function(){ var f = new Function("alert(this)"); f();//[object Window] } } var foo = new Foo(); foo.bar();
【場景9】apply和call中的this指向參數(shù)中的對象
var a = 10; var foo = { a: 20, fn: function(){ alert(this.a); } }; var bar ={ a: 30 } foo.fn.apply();//10(若參數(shù)為空,默認(rèn)指向全局對象) foo.fn.apply(foo);//20 foo.fn.apply(bar);//30
【復(fù)合場景1】
var someone = { name: "Bob", showName: function(){ alert(this.name); } }; var other = { name: "Tom", showName: someone.showName } other.showName(); //Tom //以上函數(shù)相當(dāng)于 var other = { name: "Tom", showName: function(){ alert(this.name); } } other.showName(); //Tom
【復(fù)合場景2】
var name = 2; var a = { name: 3, fn: (function(){ alert(this.name); })(), fn1:function(){ alert(this.name); } } a.fn;//2[匿名函數(shù)中的this指向全局對象] a.fn1();//3[對象內(nèi)部函數(shù)的this指向調(diào)用函數(shù)的當(dāng)前對象]
【復(fù)合場景3】
var name = "Bob"; var nameObj ={ name : "Tom", showName : function(){ alert(this.name); }, waitShowName : function(){ var that = this; setTimeout(function(){ that.showName(); }, 1000); } }; nameObj.waitShowName();//"Tom"[that=this改變this的指向,使this從指向全局變量變化到指向nameObj] var name = "Bob"; var nameObj ={ name : "Tom", showName : function(){ alert(this.name); }, waitShowName : function(){ var that = this;//that指向nameObj setTimeout(function(){ (function(){ alert(this.name); })(); }, 1000); } }; nameObj.waitShowName();// 'Bob'[形成匿名函數(shù),this指向全局變量]
本文給大家介紹了this中的9種應(yīng)用場景,希望對大家有所幫助,本站每天都有新的內(nèi)容更新,請廣大網(wǎng)友持續(xù)關(guān)注本站,謝謝。
- Javascript this關(guān)鍵字使用分析
- javascript this用法小結(jié)
- JAVASCRIPT THIS詳解 面向?qū)ο?/a>
- Javascript this指針
- 改變javascript函數(shù)內(nèi)部this指針指向的三種方法
- Javascript對象中關(guān)于setTimeout和setInterval的this介紹
- Javascript this 的一些學(xué)習(xí)總結(jié)
- javascript中onclick(this)用法介紹
- JavaScript中幾個(gè)重要的屬性(this、constructor、prototype)介紹
- javascript中的self和this用法小結(jié)
- 深入理解Javascript中this的作用域
- 圖解JavaScript中的this關(guān)鍵字
相關(guān)文章
JS返回只包含數(shù)字類型的數(shù)組實(shí)例分析
這篇文章主要介紹了JS返回只包含數(shù)字類型的數(shù)組實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了循環(huán)遍歷數(shù)組及正則匹配兩種實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-12-12JS保存、讀取、換行、轉(zhuǎn)Json報(bào)錯(cuò)處理方法
JS保存、讀取 換行 轉(zhuǎn)Json報(bào)錯(cuò)異常信息:Unexpected token ILLEGAL,具體解決方法如下,感性的朋友可以參考下哈2013-06-06JavaScript JSON數(shù)據(jù)處理全集(小結(jié))
這篇文章主要介紹了JavaScript JSON數(shù)據(jù)處理全集,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08關(guān)于Javascript中defer和async的區(qū)別總結(jié)
相信看過javascript高級程序設(shè)計(jì)的人,在javascript高級程序設(shè)計(jì)里,應(yīng)該看到了介紹了有關(guān)defer和async的區(qū)別,可是比較淺顯,而且也說得不是很清楚。下面我們來通過這篇文章來詳細(xì)了解下dfer和async的區(qū)別。2016-09-09使用mpvue搭建一個(gè)初始小程序及項(xiàng)目配置方法
這篇文章主要介紹了使用mpvue搭建一個(gè)初始小程序及項(xiàng)目配置方法,需要的朋友可以參考下2018-12-12fireworks菜單生成器mm_menu.js在 IE 7.0 顯示問題的解決方法
由于公司官網(wǎng)采用的是dreamwaver / fireworks 內(nèi)建的彈出式菜單的JS,在IE7下發(fā)現(xiàn)菜單項(xiàng)文字顯示都變成一排,無法正確瀏覽.2009-10-10javascript+mapbar實(shí)現(xiàn)地圖定位
地圖定位 圖吧地圖定位 附j(luò)avascript源碼每行都有注釋2010-04-04