如何在构造函数(JS)中获取构造函数的父级

时间:2014-08-17 07:48:08

标签: javascript

我有一些复杂的JS Objects结构:

var Players = {};

Players.Player = function (color) {
  this.color = color; //the color can be either black or white
  Players[color] = this;
}
Players.Player.prototpe.Piece = function () {
  return this.parent.color //of course, this is not valid
}
new Players.Player("black");
new Players.Player("white");
new Players["black"].Piece(); //here I want to get "black"
new Players["white"].Piece(); //here I want to get "white"

我希望我能很好地描述我的问题。我希望能够返回构造函数的paret颜色,意思是用更好的命令替换this.parent.color,第一个部分将返回“black”,第二个部分返回“white”。

谢谢!

1 个答案:

答案 0 :(得分:1)

首先,您的代码中存在拼写错误

Players.Player.prototpe.Piece应为Players.Player.prototype.Piece

如果您使用Chrome之类的浏览器,则可以通过启动开发人员控制台轻松查看和修复这些错误。见How to debug in chrome

现在转到返回颜色的实际问题,你必须修改代码

return this.parent.colorreturn this.color。这应该可以解决问题。

这个是javascript中的关键字,可以正确识别对象实例,具体取决于函数(此处)正在执行的上下文。

Players.Player.prototype.Piece = function () {
  return this.color //this is now valid
}

DEMO