Javascript、console.log 打印打印对象,但 属性 未定义
Javascript, console.log prints prints object, but property is undefined
而且我有一个读取关卡数据的函数。这是有问题的片段; actors 是一个数组,我循环遍历它,直到找到类型为 player 的演员。
function Level(plan) {
//Cut snippet..........
this.player = this.actors.filter(function(actor) {
return actor.type == "player";
});
console.log(this.player);
//................
}
玩家对象,
function Player(pos) {
this.pos = pos
this.size = new Vector(0.8, 1.5);
this.speed = new Vector(0, 0);
}
Player.prototype = new Actor();
Player.prototype.type = "player"
问题是在控制台中,
console.log(this.player)
将显示所有正确的详细信息,但是当我尝试记录位置时
console.log(this.player.pos)
我不确定。这是一个简单的程序,我没有使用 ajax 或任何东西。认为这可能与执行顺序有关,有人可以向我解释一下并提供解决方案吗?如果它与执行顺序有关,将不胜感激。
非常感谢,
多雨
您得到 undefined
,因为当您过滤 actor
数组时,您会得到一个新数组。所以 console.log(this.player)
输出一个数组,而不是单个对象。
您需要获取数组的第一个元素 this.player
以输出其 pos
属性.
像这样:
if(this.player.length > 0)
console.log(this.player[0].pos);
单个玩家使用 reduce
而不是 filter
。
this.player = this.actors.reduce(function(current, actor) {
return actor.type === 'player' ? actor : current;
});
而且我有一个读取关卡数据的函数。这是有问题的片段; actors 是一个数组,我循环遍历它,直到找到类型为 player 的演员。
function Level(plan) {
//Cut snippet..........
this.player = this.actors.filter(function(actor) {
return actor.type == "player";
});
console.log(this.player);
//................
}
玩家对象,
function Player(pos) {
this.pos = pos
this.size = new Vector(0.8, 1.5);
this.speed = new Vector(0, 0);
}
Player.prototype = new Actor();
Player.prototype.type = "player"
问题是在控制台中,
console.log(this.player)
将显示所有正确的详细信息,但是当我尝试记录位置时
console.log(this.player.pos)
我不确定。这是一个简单的程序,我没有使用 ajax 或任何东西。认为这可能与执行顺序有关,有人可以向我解释一下并提供解决方案吗?如果它与执行顺序有关,将不胜感激。
非常感谢, 多雨
您得到 undefined
,因为当您过滤 actor
数组时,您会得到一个新数组。所以 console.log(this.player)
输出一个数组,而不是单个对象。
您需要获取数组的第一个元素 this.player
以输出其 pos
属性.
像这样:
if(this.player.length > 0)
console.log(this.player[0].pos);
单个玩家使用 reduce
而不是 filter
。
this.player = this.actors.reduce(function(current, actor) {
return actor.type === 'player' ? actor : current;
});