function(x,y){
this.repeatMap = function (repeatX, repeatY) {
this.repeatX = repeatX;
this.repeatY = repeatY;
return this;
}
this.aMartix= function (){
var flagMatrix = new Array();
for ( i = 0; i < tileNumX; i++) {
flagMatrix[i] = new Array();
}
for ( x = 0; x < tileNumX; x++) {
for ( y = 0; y < tileNumY; y++) {
flagMatrix[x][y] = new repeatMap(repeatX, repeatY);
//这里报错了
}
}
}
}
1
7anshuai 2015-03-14 01:04:13 +08:00 via iPhone
repeatMap是对象的方法,将 new repeatMap() 改为 this.repeatMap() 试试
|
2
kmvan 2015-03-14 01:07:20 +08:00 via Android
var that =this;
new that.repeatMap() |
3
blacktulip 2015-03-14 01:11:28 +08:00
报的什么错?
|
4
guoziyan 2015-03-14 10:36:49 +08:00
this 的作用域发生改变 可以使用
function Set(){ this.x=1; }; Set.prototype.get=function(){ console.log(this.x) } |
5
EXDestroyer OP @blacktulip undefine is not a function
|
6
lalalanet 2015-03-14 11:52:32 +08:00
flagMatrix[x][y] = new repeatMap(repeatX, repeatY);
执行的时候 ,寻找的是局部方法,this. repeatMap绑定到this上了。 var that = this; function repeatMap (repeatX, repeatY) { that.repeatX = repeatX; that.repeatY = repeatY; return that; } this. repeatMap = repeatMap; 不过楼主你这玩意写的真烂,完全不懂js的基本做法。 |
7
EXDestroyer OP @lalalanet 确实是写的烂,,现在对js还停留在简单的DOM操作水平
|
8
arachide 2015-03-14 12:00:27 +08:00
lz身边没明白人
把js搞成莫名奇妙的js了 |
9
akong 2015-03-14 19:24:49 +08:00 via Android
repeatX ,repeatY未定义吧
|
10
akong 2015-03-14 19:50:37 +08:00 via Android
this在不用context下指向的对象是不用的,在构造函数指向新建的对象
|
11
EXDestroyer OP 谢谢各位,已经基本弄明白了
|
12
whimsySun 2015-03-15 00:16:55 +08:00
第一次见这么写js... 不同改了,全部删掉,先补补js知识重写吧,指不定你后面又写出什么
|
13
EXDestroyer OP @whimsySun 有哪些问题比较严重的求指出,感谢,说实话自己看书还是悟性还是不够
|
14
whimsySun 2015-03-15 23:48:13 +08:00
1. `repeatMap` 完全没有必要作为上下文的函数.
2. 如果`repeatMap`作为构造函数,是不需要`return this`. 3. `js`里声明数据,通常直接使用 `var a = []`; 声明对象`var obd = {}` 4. `flagMatrix[x][y] = new repeatMap(repeatX, repeatY)`这里的`repeatX`和`repeatY`又是什么鬼 |
15
EXDestroyer OP @whimsySun 谢谢回复,第一个我现在是明白了,2和4的话其实这是一个游戏里面的一小段代码,我没有写明白,第3点我试试优化一些,自己的习惯是不太好
|