在javascript对象浏览器中声明数组会崩溃
我正在尝试使用JavaScript编写一些对象。我有一个小对象,似乎是工作,但这个对象需要一个多维数组 当我试图使用这个对象的这个片段时,我的浏览器崩溃了 有关于如何用javascript编写对象的好教程吗在javascript对象浏览器中声明数组会崩溃,javascript,Javascript,我正在尝试使用JavaScript编写一些对象。我有一个小对象,似乎是工作,但这个对象需要一个多维数组 当我试图使用这个对象的这个片段时,我的浏览器崩溃了 有关于如何用javascript编写对象的好教程吗 function map(sizeX, sizeY) { var cityArr = new Array(); this.sizeX = sizeX; this.sizeY = sizeY; this.generateCity = generateCity;
function map(sizeX, sizeY)
{
var cityArr = new Array();
this.sizeX = sizeX;
this.sizeY = sizeY;
this.generateCity = generateCity;
var cityXY = new Array();
function generateCity(cityNum)
{
alert(cityNum);
}
}
当我调用此方法时,当我将调用添加到generateCity方法时,它将失败,我的浏览器将兑现
var objMap = new map();
//objMap.generateCity(2);
我做错了什么?首先,一些JavaScript最佳实践:
[]
创建新数组,而不是新建数组()
函数映射(…){…}
,而不是映射(…)
函数generateCity(cityNum)
放在this.generateCity=generateCity
之前console.log
,而不是alert
function Map(sizeX, sizeY)
{
this.sizeX = sizeX;
this.sizeY = sizeY;
// you're not using these arrays. Why are they in your example code?
var cityArr = [],
cityXY = [];
}
Map.prototype = {
sizeX: 0, // Some default values, shared by all instances
sizeY: 0, // unless overriden in the constructor function.
generateCity: function(cityNum) {
// let's not block the entire page by using alert.
console.log("cityNum: " + cityNum);
}
}
因此,如上所述,这段代码运行得很好,可以在上看到(在控制台打开的情况下运行,您将看到“cityNum:2”被打印出来。首先,一些JavaScript最佳实践:
[]
创建新数组,而不是新建数组()
函数映射(…){…}
,而不是映射(…)
函数generateCity(cityNum)
放在this.generateCity=generateCity
之前console.log
,而不是alert
function Map(sizeX, sizeY)
{
this.sizeX = sizeX;
this.sizeY = sizeY;
// you're not using these arrays. Why are they in your example code?
var cityArr = [],
cityXY = [];
}
Map.prototype = {
sizeX: 0, // Some default values, shared by all instances
sizeY: 0, // unless overriden in the constructor function.
generateCity: function(cityNum) {
// let's not block the entire page by using alert.
console.log("cityNum: " + cityNum);
}
}
这么说来,这段代码运行得很好,这一点可以在上看到(在控制台打开的情况下运行,你会看到“cityNum:2”被打印出来。哪个浏览器会崩溃?我没有看到任何可能导致崩溃的代码错误。我使用的是IE 10-Win8不知道。在Chromium 18.0.1025.151(64位ubuntu)下运行),我得到一个警告框,上面写着2。你有没有试过在它自己的空白页面上使用这个代码段?我没有遇到崩溃。我在IE10中试过,我得到一个警告框,上面写着“2”-没有崩溃。哪个浏览器会崩溃?我没有发现任何可能导致崩溃的代码错误。我正在使用IE 10-Win8不知道。在Chromium 18.0.1025.151(64位ubuntu)下运行,我得到一个警告框,上面写着2。你有没有试过在它自己的空白页面上使用这个代码段?我没有遇到崩溃。我在IE10中试过,我得到一个警告框,上面写着“2”-没有崩溃。好的,我想我需要后退一步,了解如何创建Javascript对象,然后再进一步。你有任何教程URL可以帮助我吗?我想确保我做得正确,而不仅仅是让它工作。@webdad3继续无耻地在原型和构造函数上插入我的答案,继承和d重写函数您可以查看以下答案:如果您有任何问题,我很乐意回答。+1提及原型,但像您这样设置原型,将把Map.prototype.constructor指向对象,而不是MapRelated for Inheritation,在这种情况下不一定相关。也就是说,值得一提。好的,我认为在我继续之前,我需要退一步,了解如何创建Javascript对象。你有任何教程URL对我有帮助吗?我想确保我做得正确,而不仅仅是让它工作。@webdad3继续无耻地在原型和构造函数、继承和重写函数上插入我的答案您可以查看这个答案:如果您有任何问题,我很乐意回答。+1用于提及原型,但像您这样设置原型会将Map.prototype.constructor指向对象,而不是与继承相关的MapRelated,在本例中不一定相关。也就是说,值得一提。