pos
양식을 box
으로 가져올 수없는 이유는 무엇입니까?잡히지 않은 TypeError : 객체 # <Object>의 속성 getPos가 함수가 아닙니다.
간단한 게임을 만들면서 JavaScript, 네임 스페이스 및 모듈 식 패턴을 배우려고합니다.
나는 point
, box
및 Squares
(게임) 개체를 만들었습니다.
나는 3 box'es
을 빌드하고 나중에 사용할 수 있도록 게임 객체 (Squares
)에 넣습니다. 그러나 pos에 액세스하려고하면 "Uncaught TypeError : 객체 #의 속성 getPos가 함수가 아닙니다."라는 메시지가 나타납니다.
처음에는 상자의 종류가 잘못되었다고 생각했는데 아마도 확인해야합니다 (하지만 가능하면 알 수는 없습니다). 그리고 그들은 JavaScript가 역동적 인 언어라고 생각했기 때문에 그것이 내성적이어서는 안됩니다. 분명히 혼란스럽고 좌초되었습니다. 내가 누락되었거나 이해하지 못한 것은 무엇인가?
코드 예제를 실행 : 또는 오류가이 라인에 무슨 일이 일어나고 JSFiddle.net
var myNS = myNS || {};
myNS.point = function (x, y) {
return {
x: x,
y: y
};
};
myNS.box = function (pos) {
// private members
getPos = function() {
return pos;
};
// public memebers
return {
getPos: getPos()
};
};
myNS.Squares = function() {
// private members
var boxes,
getBoxes = function() {
return boxes;
}
setBoxes = function(newBoxes) {
boxes = newBoxes;
};
// public memebers
return {
getBoxes: getBoxes,
setBoxes: setBoxes
};
}('canvasSquares');
$(window).load(function() {
$('body').append('Initialize.. <br/>');
init();
$('body').append('Initialize done. <br/> <br/>');
useBoxesLater();
});
function init() {
var boxes = [];
for (var i = 0; i < 3; i++) {
var pos = myNS.point(10 * i, 10 * i);
var box = myNS.box(pos);
boxes.push(box);
$('body').append('box added: ' + pos.x + ', ' + pos.y + '<br/> ');
}
$('body').append('boxes: ' + boxes.length + '<br/>');
myNS.Squares.setBoxes(boxes);
};
function useBoxesLater(){
var boxes = myNS.Squares.getBoxes();
$('body').append('boxes in myNS.Squares: ' + boxes.length + '<br/>');
for (var i = 0; i < boxes.length; i++) {
var box = boxes[i];
$('body').append(i + '. box: ' + box + '<br/>');
$('body').append('Find pos on box: <br/>');
$('body').append('Calling box.getPos() result in Error: "Uncaught TypeError: Property getPos of object #<Object> is not a function"');
var pos = box.getPos();
$('body').append('<br/>');
}
$('body').append('Don\'t get to here');
};