[英]Can someone explain to me why this inheiritance in javascript doesnt work?
[英]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,带有警报以显示其工作方式。
您未分配任何内容给玩家对象
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.