错误:无法将undefined转换为object:this.page[1]=100;
。它已经定义,什么是错的?
var sheepclass ;
(function($) {
sheepclass = function(handler){
var $div = $('div');
this.handler = $.extend({
'sizes': 'thin',
'eat': 'grass',
'color': 'white',
'page':[],
myalert: function() {
myconsole();
function myconsole() {
this.page[0] = 100;
console.log(this.page[0]);
}
},
myalert2: function() {
this.myalert();
}
},handler);
}
})(jQuery);
$(document).ready(function(){
var blacksheep = new sheepclass({'color':'black'});
blacksheep.handler.myalert2();
})
答案 0 :(得分:1)
尝试此操作,使用that
辅助变量
var sheepclass ;
(function($) {
sheepclass = function(handler){
var $div = $('div');
var that = this;
this.handler = $.extend({
'sizes': 'thin',
'eat': 'grass',
'color': 'white',
'page':[],
myalert: function() {
myconsole();
function myconsole() {
that.handler.page[0] = 100;
console.log(that.handler.page[0]);
}
},
myalert2: function() {
this.myalert();
}
},handler);
}
})(jQuery);
$(document).ready(function(){
var blacksheep = new sheepclass({'color':'black'});
blacksheep.handler.myalert2();
})
答案 1 :(得分:1)
内部myconsole
this
不等于您的对象,而是引用Window
。因此this.page
为undefined
- 您将page
索引的值与之无关。
您必须将通话更改为:
myconsole.call(this);
答案 2 :(得分:1)
很多这些代码似乎毫无意义。 document.ready
处理程序是不必要的,因为没有DOM操作,就像IIFE一样。您的代码可以简化为:
var sheepclass = function(handler){
this.handler = $.extend({
'sizes': 'thin',
'eat': 'grass',
'color': 'white',
'page':[],
myalert: function() {
var context = this;
function myconsole() {
context.page[0] = 100;
console.log(context.page[0]);
}
myconsole();
}
},handler);
}
var blacksheep = new sheepclass({'color':'black'});
blacksheep.handler.myalert();
另请注意,不需要使用只调用其他方法的方法。
答案 3 :(得分:0)
因为“this”是指控制台功能。
试试这个:
var sheepclass ;
(function($) {
sheepclass = function(handler){
var $div = $('div');
**var page = this.page;**
this.handler = $.extend({
'sizes': 'thin',
'eat': 'grass',
'color': 'white',
'page':[],
myalert: function() {
myconsole();
function myconsole() {
**page**[0] = 100;
console.log(**page**[0]);
}
},
myalert2: function() {
this.myalert();
}
},handler);
}
})(jQuery);
答案 4 :(得分:0)
为that
this
变量
var sheepclass ;
(function($) {
sheepclass = function(handler){
var $div = $('div');
this.handler = $.extend({
'sizes': 'thin',
'eat': 'grass',
'color': 'white',
'page':[200,300],
myalert: function() {
var that = this;
myconsole();
function myconsole() {
that.page = that.page || []
that.page[0] = 100;
console.log(that.page[0]);
}
},
myalert2: function() {
this.myalert();
}
},handler);
}
})(jQuery);
$(document).ready(function(){
var blacksheep = new sheepclass({'color':'black'});
blacksheep.handler.myalert2();
})