2012-02-03 5 views
0

기본적으로 연관 배열처럼 사용할 수있는 일반적인 객체를 자바 스크립트로 만들려고합니다.
그러나주는 개체를 조작 할 수 있도록 개체에 일부 사용자 지정 멤버를 제공하고 싶습니다. Needle to say 나는 비참하게 누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랍니다.javacript의 private 멤버 함수를 사용하여 객체를 조작합니다.

여기 제가 말하는 일반 객체입니다.

function easeArray() { 
    this.valIndex = function(searchTerm,object) { 
     //searchTerm+object; 
     if (searchTerm in object) { 
      return "true" + object[searchTerm] 
     } 
    } 
} 

그래서 이렇게 초기화하려고합니다.

 var myCollection = new easeArray(); 
    myCollection = {"dioxanes": 0, "shunning": 1, "plowed": 2, 
     "hoodlumism": 3, "cull": 4,  "learnings": 5, 
     "transmutes": 6, "cornels": 7, "undergrowths": 8, 
     "hobble": 9,  "peplumed": 10, "fluffily": 11, 
     "leadoff": 12, "dilemmas": 13, "firers": 14, 
     "farmworks": 15, "anterior": 16, "flagpole": 17}; 

이 잘 작동하지만이 같은 것을 할 때 :

alert(myCollection.valIndex()) 

를 오류가 발생합니다. 유형 오류 : 객체가 속성 또는 메서드를 지원하지 않습니다.

필자가 이해할 수있는 기능에 값을 전달하지 않는다고 생각하더라도 기능은 인식되지 않습니다.

내 최종 결과는 내가 초기화 및 키 값 쌍으로 채우고 단순히 어떤 도움을 크게 감상 할 수 object.valindex("searchTerm");

말할 수있는 일반 객체를하는 것입니다. 코드 줄에서

+2

재 할당하는 다른 값으로 myCollection 변수 코드 시도 정의한 - 데이터 객체를 "채우기"값 – ManseUK

+0

을 전달하는 데 사용하는 방법/생성자 것 아무 문제가 없지만 ManseUK이 말했듯이, 당신은'myCollection'에 아무 것도 추가하지 않으면, 당신은 새로운 값으로 그것을 오버라이드하고 있습니다. 'a = [1,2]'배열을 가지고 있다면'a = 3'은 배열에'3'을 더하지 않습니다.'a'는 배열 대신'3'을 가리 키기 만합니다. 이것이 기본 변수 할당입니다. 또한 이것이 "개인 회원"(어쨌든 JS에 존재하지 않음)과 어떤 관련이 있는지는 알지 못합니다. –

답변

1

당신이 당신의 easeArray 개체의 인스턴스를 파괴하는 것을 볼 수 있습니다. 따라서, 배열이없는 이러한 방법

대신

var easeArray = function(obj) { 
    this.obj = obj 
    this.valIndex = function(searchTerm) { 
     if (searchTerm in this.obj) { 
      return "true" + this.obj[searchTerm]; 
     } 
    } 
} 

var myCollection = new easeArray({ 
     "dioxanes": 0, "shunning": 1, "plowed": 2, 
     "hoodlumism": 3, "cull": 4,  "learnings": 5, 
     "transmutes": 6, "cornels": 7, "undergrowths": 8, 
     "hobble": 9,  "peplumed": 10, "fluffily": 11, 
     "leadoff": 12, "dilemmas": 13, "firers": 14, 
     "farmworks": 15, "anterior": 16, "flagpole": 17 
    }); 

    myCollection.valIndex("firers"); /* this returns "true14" */ 
+0

설명을 해주셔서 고맙습니다. 회복중인 액션 스크립트 중독자와 보여주기 시작하겠습니다. Ididnt는 내가 근본적으로 가치를 무시하고 있었다는 것을 깨닫는다. 나는 easeArray를 입력하기위한 변수를 만들려고 노력 중이 었는데, 분명히 그 중 하나의 방법으로 엉망이되었습니다. – user677275

1

:

 var myCollection = new easeArray(); 

당신이 구축 한 새로운 개체에 대한 참조로 변수 "myCollection"로 설정하십시오. 그런 다음, 다음 줄에 :

 myCollection = {"dioxanes": 0, "shunning": 1, "plowed": 2, ... 

당신은 다른 개체에 대한 참조를 같은 변수를 설정하십시오. 첫 번째 문장에서 생성 한 것은 그 시점에서 사라졌습니다.

"easeArray"클래스에 몇 가지 메소드를 추가하면 필요에 따라 값을 저장할 수 있습니다. 주어진 예제를 감안할 때 왜 "valIndex"함수가 필요한지 잘 모르겠습니다. 당신은 단순히 그 문자열 중 하나를 참조하는 경우 :

 var index = myCollection["dioxanes"]; 

당신은 "인덱스"이 때문에 최근 문에서 작동하지 않을 수 0

관련 문제