繁体   English   中英

Javascript:对象和函数…有人可以解释为什么这行不通吗?

[英]Javascript: objects and functions … Can someone explain why this wont work?

我正在尝试一个代码,它似乎无法正常工作。 有人可以告诉我我在这里想念的东西吗,谢谢!

JavaScript的

var entity = function (type, w, h, c, kickSpeed, accuracy, power) {
    var entity = {};
    entity.type = type;
    entity.appearance = {
        w : w,
        h : h,
        c : c
    };
    entity.attribute = {
        kickSpeed : kickSpeed,
        accuracy : accuracy,
        power : power
    };
    return entity;
};

var spawnPlayer = function () {
    var player = {};
    entity("player", 50, 50, "green", 10, 1, 10);
    entity = player;
    ctx.fillRect(1, 1, player.appearance.w, player.appearance.h);
};
spawnPlayer();

这段代码中的问题是它找不到player.appearance对象。

您忘记分配实体。

player = entity("player", 50, 50, "green", 10, 1, 10);

只要把这行

var player = entity("player", 50, 50, "green", 10, 1, 10);

和卸妆

entity=player 

您没有分配将值返回给播放器变量的实体函数,因此永远不会定义它。 您应该阅读可变范围

var entity = function (type, w, h, c, kickSpeed, accuracy, power) {
    var entity = {};
    entity.type = type;
    entity.appearance = {
        w : w,
        h : h,
        c : c
    };
    entity.attribute = {
        kickSpeed : kickSpeed,
        accuracy : accuracy,
        power : power
    };
    return entity;
};

var spawnPlayer = function () {
    var player = entity("player", 50, 50, "green", 10, 1, 10);
    ctx.fillRect(1, 1, player.appearance.w, player.appearance.h);
};
spawnPlayer();

这是JSfiddle,带有警报以显示其工作方式。

https://jsfiddle.net/5u8bvst0/

您未分配任何内容给玩家对象

var spawnPlayer = function () {
  // here you define a new variable
  var player = {};
  // then you execute the function but the result are gone
  entity("player", 50, 50, "green", 10, 1, 10);
  // at the end you destroy the function definition assigning an empty object to it
  entity = player;
  ...
};

相反,您应该:

var spawnPlayer = function () {
  //execute the entity and assign to player
  var player = entity("player", 50, 50, "green", 10, 1, 10);
  //do whatever
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM