簡體   English   中英

Javascript:從私有函數訪問公共變量

[英]Javascript: Access public variable from private function

我正在學習javascript,並在下面嘗試了一些代碼。 我將以下javascript對象稱為

var client=new atrmsClient('6247543');

var val=client.getRosterData();

我在這條線上出現錯誤:

var postData= {"cmdShow": "Show", "txtEmpId" : EmpId, "txtPeopleSoft_Id": EmpId, "__VIEWSTATE":  viewState   }

EmpId未定義。 誰能告訴我我做錯了什么?

"use strict";

function atrmsClient(EmployeeId)
{
    this.EmpId=EmployeeId;

    var siteUrl="http://wncrpma011.japa.ad.aexp.com/TransportRoster/EmployeeReport.aspx";


    var getViewState=function()
    {

            $.ajax
        ({
            type: "GET",
            url: siteUrl,
            dataType: 'html',           
            processData: false,
                xhrFields: 
                {
                    withCredentials: true
                }
        })
        .done(ExtractViewState).fail(errorFunc).always(alwaysFunc);

        return "";

    };

    var SendPostRequest=function(viewState)
    {
        var postData= {"cmdShow": "Show", "txtEmpId" : EmpId, "txtPeopleSoft_Id": EmpId, "__VIEWSTATE":  viewState   }

            $.ajax
        ({
            type: "POST",
            url: siteUrl,
            data: postData,
            dataType: 'html',           
            processData: false,
                xhrFields: 
                {
                    withCredentials: true
                }
        })
        .done(parseRosterData).fail(errorFunc).always(alwaysFunc);


    };


    var parseRosterData=function(data)
    {
        console.log(data);



    };

    var ExtractViewState=function(data)
    {

        var rawResponse=data;
        var viewState=$(rawResponse).find('input[name=__VIEWSTATE]')[0].value;
        console.log(viewState);

        SendPostRequest(viewState);

    };

    var errorFunc=function()
    {


    };


    var alwaysFunc=function()
    {


    };

    this.getRosterData=function()
    {
        var viewStateVal=getViewState();
        console.log("calling");
        return "";
    };



}

您永遠不會聲明一個名為EmpId的變量。

您擁有的唯一EmpIdatrmsClient實例的屬性

var EmpId = EmployeeId;

…或僅使用EmployeeId ,因為它仍在范圍內。

另一個解決方案可能是:

function atrmsClient(EmployeeId) {

    var that = this;
    this.EmpId=EmployeeId;

    var SendPostRequest=function(viewState) {
        var postData= {"cmdShow": "Show", "txtEmpId" : that.EmpId, "txtPeopleSoft_Id": that.EmpId, "__VIEWSTATE":  viewState   }
        // ...
    };

}

這取決於您是否需要從外部使用EmpId ,即使用client.EmpId 如果是,則此解決方案應適合您的需求。 否則,請使用@Quentin。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM