所以我的问题是,我用两种方法在javascript中创建了一个基本对象,但是当我调用它们时,chrome的调试器说它们不存在。但问题是,如果我调用对象内部的任何方法,他们不会给出任何问题但是在对象之外我得到了这个:
未捕获的TypeError:对象#<'播放器>没有方法'设置'
(注意:'在播放器中添加'否则Stack Overflow会修剪'播放器')
以下是代码:
function player() {
this.x=25; this.y=1;
function set(setx,sety) {
this.x = setx;
this.y = sety;
document.getElementById('x'+this.x+'y'+this.y).style.backgroundColor='000000';
}
function move(movex,movey) {
document.getElementById('x'+this.x+'y'+this.y).style.backgroundColor='';
set(movex,movey);
}
}
这是在标题中,这是正文中的javascript代码:
var x = 25;
mainPlayer = new player();
mainPlayer.set(x,1);
var interval1 = setInterval(function() { x--; mainPlayer.set(x,1); },100);
答案 0 :(得分:1)
正如@musefan和@SLaks所说,function set...
内的function player
是player
函数的私有(或作用域)。要导出它们,您可以按照建议进行操作:
this.set = function(setx, sety) {...}
或者,还有另一种方法,即将函数添加到player
的原型中:
function player() {...}
player.prototype.set = function(setx, sety) {...}
这有效地为player
的'class'蓝图添加了一个函数。
答案 1 :(得分:0)
set
是player()
函数中存在的局部变量。
它与返回的对象无关。
要将其添加到对象,请写下this.set = function(...) { ... }
。
答案 2 :(得分:0)
问题是你的函数对player
对象实际上是“私有的”。一种选择是定义你的函数:
this.set = function(setx, sety){
//...
}