我有一些复杂的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”。
谢谢!
答案 0 :(得分:1)
首先,您的代码中存在拼写错误
Players.Player.prototpe.Piece
应为Players.Player.prototype.Piece
如果您使用Chrome之类的浏览器,则可以通过启动开发人员控制台轻松查看和修复这些错误。见How to debug in chrome
现在转到返回颜色的实际问题,你必须修改代码
从return this.parent.color
到return this.color
。这应该可以解决问题。
这个是javascript中的关键字,可以正确识别对象实例,具体取决于函数(此处)正在执行的上下文。
Players.Player.prototype.Piece = function () {
return this.color //this is now valid
}