javascript - 从另一个函数访问对象中的变量

标签 javascript

我试图从 MyFunction 访问 myObject 内的变量 myVar,但出现此错误

Uncaught TypeError: Cannot read propperty 'myVar' of undefined

运行下面的代码时。

        var myObject;

        function MyObject(){
            this.myVar = 500;
            MyFunction();
        }

        function MyFunction(){
            alert(myObject.myVar);
        }

        myObject = new MyObject();

我已阅读this但仍然不知道如何访问它。

最佳答案

当调用函数时,它会被执行,然后将结果返回给变量。

因此,函数首先执行,然后将结果传递回变量

var myObject;              // 1. new variable, undefined

function MyObject(){       // 3. execute function
    this.myVar = 500;      // 4. set a property
    MyFunction();          // 5. call next function
}

function MyFunction(){
    alert(myObject.myVar); // 6. myObject is still undefined, 
}                          //    result hasn't returned yet

myObject = new MyObject(); // 2. call function - 7. When everything is done
                           //                       executing, the result 
                           //                       is returned

换句话说,你不能这样做

解决此问题的一种方法是对 MyFunction 进行原型(prototype)设计并保持 this 的值不变

function MyObject() {
    this.myVar = 500;
    this.MyFunction();
}

MyObject.prototype.MyFunction = function() {
    alert(this.myVar);
}

var myObject = new MyObject();

FIDDLE

关于javascript - 从另一个函数访问对象中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23456453/

相关文章:

javascript - 如何使用 angular-http-auth 传递凭据?

javascript - 我可以通过带有 Sanctuary 的对象属性生成 "over"

javascript - 如何将字符串[格式化为数组]转换为数组javascript

javascript - 是否可以让环岛在前面显示 5 个元素而不是 3 个?

javascript - 选择移动 Web HTML5 框架

javascript - vue-chartjs 无法渲染折线图

javascript - UI-Select2 从下拉列表中删除选项?

javascript - qtip工具提示中的图表?

javascript - 如何在 Javascript 中运行多个函数?

javascript - 使用 setLabel 方法将 CSS 应用于卡住列的标题