为什么我无法访问通过对象的方法创建的对象

时间:2018-08-18 15:53:44

标签: javascript javascript-objects

假设我有以下代码:

var m = 
{
    init: function(num, num2, num3)
    {
        this.num = num;
        this.num2 = num2;
        this.num3 = num3;
    }
};

var t = 
{
    create: function()
    {
        var obj = Object.create(m);
        obj.init(1,2,3);
    }

};

t.create();
console.log(obj)

执行此代码时出现此错误:

  

obj未定义

如何使obj在方法create之外工作?

3 个答案:

答案 0 :(得分:2)

更改create函数以返回obj。 然后,您可以执行var obj = t.create()

这是完整的代码:

var m = 
{
    init: function(num, num2, num3)
    {
        this.num = num;
        this.num2 = num2;
        this.num3 = num3;
    }
};

var t = 
{
    create: function()
    {
        var obj = Object.create(m);
        obj.init(1,2,3);
        return obj;
    }

};

var obj = t.create();
console.log(obj)

答案 1 :(得分:1)

obj是函数create的局部变量。您需要返回它以提供对该函数之外的访问。

var t = 
{
    create: function()
    {
        var obj = Object.create(m);
        obj.init(1,2,3);
        return obj;
    }

};

var obj = t.create();
console.log(obj)

答案 2 :(得分:0)

返回创建的对象将解决您的问题。 obj是绑定到create函数作用域的局部变量,您不能在外部访问它。

var m = 
{
    init: function(num, num2, num3)
    {
        this.num = num;
        this.num2 = num2;
        this.num3 = num3;
    }
};

var t = 
{
    create: function()
    {
        var obj = Object.create(m);
        obj.init(1,2,3);
        return obj;
    }

};
let obj = t.create();
console.log(obj);