静态属性不起作用

static properties does not work

本文关键字:不起作用 属性 静态      更新时间:2023-09-26

我正在编写一些javascript代码,它首先从数据库中检索一些数据(函数$.get()),然后对数据执行一些计算-使用带有静态属性的CalcModule()将数据传递给函数Test()。通过控制台,我看到静态属性(productname,productid)已设置(在$.get()内),但通过控制台,我们还看到函数Test()仍然无法访问(可见)这些值??

我做错了什么?(我查看了一些关于静态属性的网站,例如http://elegantcode.com/2011/01/19/basic-javascript-part-7-static-properties-and-methods/,但我仍然无法解决这个问题)

代码:

$(document).ready(function () {

    function CalcModule() {};
    //static variables
    CalcModule.nrofeproducts;
    CalcModule.productid = [];
    CalcModule.productname = [];

    //get the product data from the database
    $.get("getdata.php",
        function (msg) {
            //some code here...
            //load CalcModule with retrieved db values for calculation
            for (var i = 0; i < msg.nrofeproducts; i++) {
                CalcModule.productid[i] = msg.productid[i];
                CalcModule.productname[i] = msg.productname[i];
            }
            //for debugging purposes
            console.log(CalcModule.productname);
            console.log(CalcModule.productid);
        }, "json"); //$.get()
    function Test() {
        var x = [];
        x = CalcModule.productname;
        console.log(CalcModule.productname);
    }
    Test();
})
 $.get("getdata.php",
    function (msg) {
        //some code here...
        //load CalcModule with retrieved db values for calculation
        for (var i = 0; i < msg.nrofeproducts; i++) {
            CalcModule.productid[i] = msg.productid[i];
            CalcModule.productname[i] = msg.productname[i];
        }
        //for debugging purposes
        console.log(CalcModule.productname);
        console.log(CalcModule.productid);
        // We are guaranteed that $.get is done
        Test();
    }, "json"); //$.get()
    function Test() {
      var x = [];
      x = CalcModule.productname;
      console.log(CalcModule.productname);
    }
    // If we call Test() here, $.get will not be done yet.