0

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

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

有没有关于如何在 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);

我究竟做错了什么?

4

1 回答 1

3

首先,一些 JavaScript 最佳实践:

  1. 用于[]创建一个新数组,而不是new Array(),
  2. 构造函数使用大写字母,所以function Map(...) {...}, not map(...),
  3. 在声明它们之前不要引用函数,所以把你放在你function generateCity(cityNum)之前this.generateCity = generateCity
  4. 使用console.log,不alert
  5. 如果您正在构建一个对象,请通过将其功能放在其原型上来将您的对象定义为一个对象。

这意味着这样做:

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);
  }
}

所以,话虽如此,这段代码工作得很好,可以在http://jsfiddle.net/mtr24上看到(在你的控制台打开的情况下运行,你会看到“cityNum:2”被打印出来。

于 2013-07-22T05:23:26.040 回答