日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

js面向对象编程:this究竟代表什么?第二篇

發布時間:2025/3/16 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js面向对象编程:this究竟代表什么?第二篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ?總覺得自己弄明確了js中this的含義。this總是指向調用方法的對象,作為方法調用,那么this就是指實例化的對象。但前幾天自己寫腳本卻遇到了一個非常奇怪的問題。

? ?代碼例如以下:

?

//內部對象AutoCompleteInnerfunction AutoCompleteInner(transformResultInner){if(transformResultInner){this.transformResultInner=transformResultInner;} }AutoCompleteInner.prototype.transformResultInner = function() { alert("inner transformResult");}AutoCompleteInner.prototype.TestInner = function() { this.transformResultInner();}//封裝了對內部對象AutoCompleteInner的調用function AutoCompleteOuter(obj) { this.TextField = obj.TextField;this.ValueField = obj.ValueField;if (obj.transformResult) {this.transformResultOuter = obj.transformResultOuter;} }AutoCompleteOuter.prototype.transformResultOuter=function() {alert("TextField:"+this.TextField+",ValueField:"+this.ValueField); }AutoCompleteOuter.prototype.TestOuter = function () {var test =new AutoCompleteInner(this.transformResultOuter);test.TestInner();}測試代碼1

//測試代碼 1 function test(){ var obj={};obj.TextField = "TextField";obj.ValueField ="ValueField"; var temp=new AutoCompleteOuter(obj); temp.transformResultOuter(); }
彈出現實的內容為“TextField:TextField,ValueField:ValueField”這個非常easy理解。在實例AutoCompleteOuter的方法transformResultOuter中的this就是AutoCompleteOuter的實例temp,彈出的內容自然也和合理,符合作為方法調用,那么this就是指實例化的對象。

測試代碼2

function test(){ var obj={};obj.TextField = "TextField";obj.ValueField ="ValueField"; var temp=new AutoCompleteOuter(obj); // temp.transformResultOuter();temp.TestOuter();} 通過分析代碼。發現。調用的也是AutoCompleteOuter的方法transformResultOuter,但:問題是:

彈出的內容卻是“TextField:undefined,ValueField:undefined

非常奇怪,調用的方法一樣傳遞的參數也樣,但為什么彈出的彈出的內容不一樣的?

經過分析發如今測試二的代碼中this的含義和測試一中的代碼中的this已經不一樣了,測試一中的this代表的是AutoCompleteOuter的實例。但在測試二中this代表的是AutoCompleteInner的實例,這也就是為什么同樣的代碼為什么顯示的內容卻不一樣的原因了。

看來this總是指向調用方法的對象這才是區分this的根本方法。this是上下文相關的,怎樣機械的理解作為方法調用,那么this就是指實例化的對象。就非常難理解此處的問題。

轉載于:https://www.cnblogs.com/ldxsuanfa/p/10840821.html

總結

以上是生活随笔為你收集整理的js面向对象编程:this究竟代表什么?第二篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。