說我在對(duì)象中具有以下屬性方法: onReady: function FlashUpload_onReady() { Alfresco.util.Ajax.jsonGet({ url: Alfresco.constants.PROXY_URI + "org/app/classification", successCallback: { fn: function (o) { var classButtonMenu = [], menuLabel, that = this; var selectButtonClick = function (p_sType, p_aArgs, p_oItem) { var sText = p_oItem.cfg.getProperty("text"); that.classificationSelectButton.set("label", sText); }; for (var i in o.json.items) { classButtonMenu.push({ text: o.json.items[i].classification, value: o.json.items[i].filename, onClick: {fn: selectButtonClick} }); } this.classificationSelectButton = new YAHOO.widget.Button({ id: this.id + "-appClassification", type: "menu", label: classButtonMenu[0].text, name: "appClassification", menu: classButtonMenu, container: this.id + "-appClassificationSection-div" }); }, scope: this }, failureMessage: "Failed to retrieve classifications!" });我花了一些猜測(cè)才能弄清楚在selectButtonClick我需要引用的函數(shù)中(that而不是this為了獲得訪問權(quán))this.classificationSelectButton(否則就會(huì)出現(xiàn)undefined),但是我不確定為什么不能使用this。我最好的猜測(cè)是,new YAHOO.widget.Button一旦調(diào)用了構(gòu)造函數(shù),整個(gè)對(duì)象中任何被某種方式引用的屬性都會(huì)失去作用域。有人可以解釋為什么我必須引用classificationSelectButton它var that = this而不是僅僅調(diào)用`this.classificationSelectButton'嗎?
用“ var that = this”理解Javascript范圍
犯罪嫌疑人X
2019-11-28 13:47:59