gpt4 book ai didi

javascript - 未捕获类型错误 : not a function for a private method in TypeScript

转载 作者:行者123 更新时间:2023-11-30 15:55:55 24 4
gpt4 key购买 nike

我试图访问我的 MyAccount 类中的一个私有(private)方法,但它给出了一个错误:uncaught typeError: this.displayTabOnClick not a function。我可以清楚地确认它是 MyAccount 类中可用的私有(private)方法,另一个类似的方法 displayTabOnPageLoad 工作得很好。

下面是代码片段:

MyAccount.ts 文件

class MyAccount
{
private displayTabOnClick(thisObj: JQuery, e:Event, callback?:()=>any): void {
$(document).scrollTop(0);
e.preventDefault()
let hash = thisObj.prop('hash');

// Update the location hash
window.location.hash = hash;

// Add Selected class to the current click elem
// Remove selected class from other .menu-link elem
thisObj.addClass('selected');
$('.menu-link').not(thisObj).removeClass('selected');

// Set Tab Header
this.setHeader(hash);

// Hide all sections
// And display only the hashed section
$('section').css('display','none');
$(hash).css('display','block');
}

/**
* Switch My Account Tab
* According to the passed ID
*
* @return void
*/
public switchTab (e?: Event): void {
if (e && e.type === "click") {
this.displayTabOnClick($('.menu-link'),e);
}
else {
this.displayTabOnPageLoad($('.menu-link'));
}
}
}

App.ts 文件

// My Account Page
let page = new MyAccount;

if (URL.checkPath('/user/myaccount')) {
page.switchTab();
}

$('.menu-link').click(page.switchTab);

最佳答案

您在调用 $('.menu-link').click(page.switchTab); 时遇到了 this 范围问题(this作用域为调用者,而不是页面)

修复它的选项之一:

$('.menu-link').click(e => page.switchTab(e));

另一个:

$('.menu-link').click(page.switchTab.bind(page));

我会选择第一个,因为它可以保证类型安全。

关于javascript - 未捕获类型错误 : not a function for a private method in TypeScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38549302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com