2013-07-22 2 views
0

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

내가 뭘 잘못하고 있니?

+1

어떤 충돌이 발생합니까? 해당 오류가 발생할 수있는 코드에는 아무런 문제가 없습니다. –

+0

IE 10 - Win8을 사용하고 있습니다. – webdad3

+0

잘 모름 Chromium 18.0 .1025.151 (우분투 64 비트), 2라는 경고 상자가 나타납니다. – enhzflep

답변

3

첫째, 일부 자바 스크립트 모범 사례 :하지 map(...) 그래서

  1. 사용 [] 새로운 배열이 아닌 new Array()를 만들려면 생성자 함수에 대한
  2. 사용 대문자, function Map(...) {...},
  3. 돈 ' t 참조 함수를 선언하기 전에 function generateCity(cityNum)을 넣으십시오. this.generateCity = generateCity,
  4. console.log이 아닌을 사용하십시오.,
  5. 개체를 제작하는 경우 프로토 타입에 기능을 추가하여 개체를 하나의 개체로 정의하십시오. 이 일을 의미

: http://jsfiddle.net/mtr24에서 볼 수 있듯이 그렇게 말한다면, 그래서

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 "인쇄 중

+0

좋아, 내가 뒤로 물러나서 자바 스크립트 객체를 만드는 방법을 이해해야한다. 나에게 도움이되는 자습서 URL이 있습니까? 나는 그것이 올바르게 작동하는 것 이상으로 올바르게하고 있는지 확인하고 싶습니다. – webdad3

+0

@ webdad3 프로토 타입 및 생성자 함수, 상속 및 재정의 함수에 대한 내 대답을 뻔뻔하게 연결하여이 답변을 확인할 수 있습니다. http://stackoverflow.com/questions/16063394/prototypical-inheritance-writing-up/16063711#16063711 If 질문이 있으시면 기꺼이 대답 해 드리겠습니다. – HMR

+0

+1 프로토 타입을 언급했지만 프로토 타입을 설정하면 상속과 관련된 Map – HMR

관련 문제