我是JavaScript / jQuery的新手。 想知道是否有更好的方法可以通过函数返回对象。

//this is the Object creator.
function makeNewPlayer(name, score) {
    var player = {};
    player.name = name;
    player.score = score;

    return player;
};

这就是我使用该功能的方式。

var player_info = makeNewPlayer('Bob' ,100);

但是,当我使用对象时,我需要这样调用它:

player_info.player.name
player_info.player.score

看起来很愚蠢,有什么办法像这样直接使用对象吗?

player_info.name
player_info.score

编辑:

我不知道该函数将创建多少个对象。 假设有一个for循环可以使score_1,score_2等。

function makeNewPlayer(name, score) {
    var player = {};
    player.name = name;

    for(i=0, i<number_of_score, i++){
        eval("player.score_" + i) = score[i];
    };

    return player;
};

#1楼 票数:1

您可以使用破坏分配来声明全局或局部范围的变量

 //this is the Object creator. function makeNewPlayer(name, score) { var player = {}; player.name = name player.score = score return player; }; var player_info = makeNewPlayer("Bob", 100); { let {name: _name, score} = player_info; // do stuff with `_name`, `score` console.log(_name, score); } 

#2楼 票数:0

function makeNewPlayer(name, score) {
   return {name, score};
};

let players = [];
// in for loop -- sample code only, you need to supply name & score
{
   players.push(makeNewPlayer(name, score));
}

#3楼 票数:0

除了“ Bob”应该用引号引起的事实外,它对我来说还不错。

var player_info = makeNewPlayer('Bob', 100);

然后我可以像这样正常访问它:

player_info.name
player_info.score

#4楼 票数:0 已采纳

使用new

我从博客中复制了一些文字,以解决您的疑问:

构造函数是用于创建对象的特殊函数:

例:

function StarkIndustries(name, birth) {
  this.name = name;
  this.birth = birth;
}
var iron1 = new StarkIndustries('iron01', 2017);
var iron2 = new StarkIndustries('iron02', 2017);
alert(iron1.name);
alert(iron2.name);

结果:

iron01
iron02

通过在函数之前添加new,该函数将变成构造一个对象的构造函数。

但是调用一个没有构造函数的构造函数是很危险的,因为它将修改全局对象window 因此,需要在构造函数中进行完整性检查:

if (!(this instanceof StarkIndustries)) {
  warn("StarkIndustries is a constructor and should be called with `new`");
}

回到您的代码,它应该是:

function makeNewPlayer(name, score) {
    this.name = name
    this.score = score
};

var iron1 = new makeNewPlayer('iron01', 2017);

#5楼 票数:0

您可以在函数内部使用临时构造函数:

function makeNewPlayer(name, score){
  const Player = function(name, score){
    this.name = name;
    this.score = score;
  };

  return new Player(name, score);
}

您也可以使用外部函数代替嵌套函数。

#6楼 票数:0

在不更改功能的情况下,我能够以所需的方式获得输出

player_info.name
player_info.score

查看下面的代码段

 //this is the Object creator. function makeNewPlayer(name, score) { var player = {}; player.name = name player.score = score return player; }; var player_info = makeNewPlayer("Bob", 100); console.log(player_info.name); console.log(player_info.score); 

  ask by Hi_World translate from so

未解决问题?本站智能推荐:

2回复

Javascript函数作为对象属性返回

我试图将函数的值作为对象属性返回(而不是函数本身)。 这是我现在的代码,但是当我尝试在我的jQuery插件中访问option_list [0] [0] .label或.value时,它会中断。 思考?
3回复

Javascript函数返回会话对象

这是一个简单的脚本,用于检索“CouchDB”会话并获取用户信息。 它使用'couch.j',它使用'jQuery'。 我已经使用JavaScript了一段时间,但我无法弄清楚如何传递返回值然后使用它们。 更让我感到困惑的是, $(document).ready函数中的console.l
1回复

在调用函数的地方使用的JavaScript函数返回对象

我有一个类似以下的函数,但是调用此函数的函数返回未定义的,我不知道为什么。 上面的内容由以下内容调用。 我在哪里想念这个?
1回复

使用构造函数创建对象并使用javascript返回完成的对象的函数

我正在使用对象构造函数创建对象。 我正在嵌套这些对象,例如: 并提供更多详细信息,您可以在jsfiddle上检查我的代码: http : //jsfiddle.net/8v2b9x7p/3/ 如您所见,我创建了一些对象,例如“ weaponMastery”,“ sword”,“ axe
1回复

函数不会在javascript中返回对象

我在函数中返回一个对象,但为什么返回undefined ? 这是我的代码 更新 当我在parseXML中执行console.log()它将返回正确的对象 更新2 仍然返回undefined 这是cityattr的代码
3回复

Javascript函数返回false甚至找到对象

我有一个Product javascript数组,其中包含所有产品信息。 创建了一个迭代此数组并通过匹配id查找产品的函数。 检查这个演示 函数每次都返回false,即使找到匹配的产品id,也不知道为什么? 如果我将匹配的数组键存储在变量中并在迭代后,返回该键的值,它返回正确的对象。
2回复

javascript对象中的默认函数返回

我一直在尝试用javascript实现某些功能,但未成功。 看一下下面的对象 这只是一个虚拟对象,但是有两件事我做不到。 首先,代替$(“ div”)。css(); 我想有一个变量,它是调用js的容器。 其次,我希望init函数无需调用即可运行...因此,如果data-behavio
1回复

在AJAX函数中以JavaScript返回对象[重复]

这个问题已经在这里有了答案: 如何从异步调用返回响应? 36个答案 我正在尝试从函数中的AJAX其余响应返回结果。 当我使用以下代码时,我从警报中得到的结果是0,这是我初始化的结果。 在响应返回之前是否返回结果? 如果是这样,有没有办法等到响应完成以返回结果?