仅仅因为你只传递了一个论点。
function game()
{
var args = arguments;
this.size = function() { return args.length; };
}
function make_game()
{
return new game(arguments); // passing only one
}
function make_game2()
{
return new game(arguments[0], arguments[1], arguments[2]); // passing three
}
var my_game = make_game(4, 'a', true);
console.log(my_game.size()); // 1
var my_game2 = make_game2(4, 'a', true);
console.log(my_game2.size()); // 3
您可以使用另一个函数来初始化对象
function game()
{
var args;
this.size = function() { return args.length; };
this.init = function(){
args = arguments;
}
}
function make_game()
{
var gm = new game();
gm.init.apply(gm, arguments);
return gm;
}
var my_game = make_game(4, 'a', true);
console.log(my_game.size()); // 3
这是为了演示它是如何工作的。强烈建议遵循基于原型的设计。