日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/16 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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究竟代表什么?第二篇的全部內容,希望文章能夠幫你解決所遇到的問題。

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