當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JS容易犯错的this和作用域
生活随笔
收集整理的這篇文章主要介紹了
JS容易犯错的this和作用域
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
| var someuser = { ????name: 'byvoid', ????func: function() { ????????console.log(this.name); ????} }; var foo = { ????name: 'foobar' }; someuser.func(); // 輸出 byvoid foo.func = someuser.func; foo.func(); // 輸出 foobar name = 'global'; func = someuser.func; func(); // 輸出 global |
?
在 JavaScript 中,上下文對象就是 this 指針,即被調(diào)用函數(shù)所處的環(huán)境。上下文對象 的作用是在一個函數(shù)內(nèi)部引用調(diào)用它的對象本身。
在 JavaScript 中,本質(zhì)上,函數(shù)類型的變量是指向這個函數(shù)實(shí)體的一個引用,在引用之 間賦值不會對對象產(chǎn)生復(fù)制行為。我們可以通過函數(shù)的任何一個引用調(diào)用這個函數(shù),不同之 處僅僅在于上下文。
仔細(xì)觀察上面的例子,使用不同的引用來調(diào)用同一個函數(shù)時,this 指針永遠(yuǎn)是這個引用所屬的對象
?
| var scope = 'top'; var f1 = function() { ????console.log(scope); }; f1(); // 輸出 top var f2 = function() { ????var scope = 'f2'; ????f1(); }; f2(); // 輸出 top |
?函數(shù)作用域的嵌套關(guān)系是定義時決定的,而不是調(diào)用時決定的,也就 是說,JavaScript 的作用域是靜態(tài)作用域,又叫詞法作用域,這是因?yàn)樽饔糜虻那短钻P(guān)系可 以在語法分析時確定,而不必等到運(yùn)行時確定
轉(zhuǎn)載于:https://www.cnblogs.com/zhouguoshuai/p/8074428.html
總結(jié)
以上是生活随笔為你收集整理的JS容易犯错的this和作用域的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 视图层的数据绑定
- 下一篇: 你不知道的JS5-原型