Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript对象浏览器中声明数组会崩溃_Javascript - Fatal编程技术网

在javascript对象浏览器中声明数组会崩溃

在javascript对象浏览器中声明数组会崩溃,javascript,Javascript,我正在尝试使用JavaScript编写一些对象。我有一个小对象,似乎是工作,但这个对象需要一个多维数组 当我试图使用这个对象的这个片段时,我的浏览器崩溃了 有关于如何用javascript编写对象的好教程吗 function map(sizeX, sizeY) { var cityArr = new Array(); this.sizeX = sizeX; this.sizeY = sizeY; this.generateCity = generateCity;

我正在尝试使用JavaScript编写一些对象。我有一个小对象,似乎是工作,但这个对象需要一个多维数组

当我试图使用这个对象的这个片段时,我的浏览器崩溃了

有关于如何用javascript编写对象的好教程吗

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,在本例中不一定相关。也就是说,值得一提。