我目前正在使用类的脚本:http://digg.googlecode.com/files/Class-0.0.2.js
我已经加载了最新版本的jQuery。
这是我的代码。
var Deck = Class.create({
init: function() {
var this.list = [];
},
console: function() {
console.log(this.list);
},
addCards: function (elemone, elemtwo, elemthree) {
$(elemone).each(function(i, el) {
var values = $(elemtwo, this).text();
if ($(elemthree, this).text() == "2") {
this.list.push(values);
}
this.list.push(values);
});
}
});
我只是通过加载上面的代码得到错误“Unexpected token this”。
预期的行为是使用此
创建一个对象var deck = new Deck();
然后添加addCards找到的卡片列表
deck.addCards(elements, go, here);
最后使用deck.list
或this.list
的函数访问它(后者我相信会导致错误)。将var this.list
更改为仅this.list
会导致另一个错误 - Cannot read property 'push' of undefined
答案 0 :(得分:2)
var this.list = [];
是问题this.list = [];
会做的......
this.list
不是变量,此处list
是this
引用的对象的属性,因此无需使用var
。
每个循环中都存在上下文问题,所以
var Deck = Class.create({
init: function () {
this.list = [];
},
console: function () {
console.log(this.list);
},
addCards: function (elemone, elemtwo, elemthree) {
var self = this;
$(elemone).each(function (i, el) {
//here this referrs to the current element being iterated on, not the Deck object so use a closure variable
var values = $(elemtwo, this).text();
if ($(elemthree, this).text() == "2") {
self.list.push(values);
}
self.list.push(values);
});
}
});
答案 1 :(得分:1)
您在var
前面不需要this.list
- 您正在为现有对象分配属性,而不是创建新对象。