假设我有以下代码:
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
之外工作?
答案 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);