는 무엇입 javascript 해시 테이블의 구현을 방지하는 네임스페이스 객체의 충돌?

StackOverflow https://stackoverflow.com/questions/103679

문제

첫째로 떨어져:내가 사용하고 오히려 모 구현을 자바스크립트로 포함된 스크립트 엔진을 위해 Adobe InDesign CS3.이 구현에 때로는 발산에서"표준"자바스크립트,그래서 내 문제입니다.

내가 사용하는 존 레식의 jsdiff 라이브러리 (스트)을 비교하는 텍스트의 선택 사이에 두 개의 문서입니다.jsdiff 사용하여 바닐라 개체 연관 배열을 지도에서 단어 텍스트를 다른 객체입니다.(See"ns"와"os"에서 변수 jsdiff.js 의 주위에,선 129.)

나는 두통 시작할 때"말씀이 반영"제공됩니다."반영하는"기본적으로 읽기 전용 객실에 모든 체입니다.때 jsdiff 할당 하려고 가치에 연결 배열 ns['반영'],모든 것 폭발하게 됩니다.

나의 질문:제를 해결할 방법이 있습니까 이?는 방법이 있을 해시 테이블에서 javascript 를 사용하지 않고 명백한 개체 바닐라?

지상 규칙: 스위칭 스크립트 엔진은 옵션이 아닙니다.:)

도움이 되었습니까?

해결책

할 수 있습니다"잘못된 질문"(으로 레이몬드 첸을 것이다);보다는 사용하지 않도록 노력하고 바닐라 객체를 변경해 보십시오 방법으로 연관 배열 구성원이 지정됩니다.

내가 하려고 접근하다:대신에 있는 배열 구성원 ns["반"],는 방식을 변경 jsdiff 빌드 어레이도록 구성원은 ns["_reflect"]거나 일부 다른 변이다.

다른 팁

는 경우 JS 구현을 사용하여 지원합 hasOwnProperty 방법 개체에 대한 사용할 수 있는지 여부를 테스트하는 시설은 명시적으로 설정되어 있는 객체 또는 재산 상속에서의 프로토 타입입니다.예제:

if(object.hasOwnProperty('testProperty')){
     // do something
}

잘체에서 javascript 은 연관 배열,진짜로 다른 내장 솔루션에 대한 해시입니다.할 수 있습니다 당신의 자신을 만들이비 hashtable 여 포장 등 주변에 약간의 배열이 있지만 아마도 중요한 성능과 수동 작업에 참여했다.

그냥 참고 난 정말로 사용하거나 보 jsdiff 라이브러리할 수 있도록 제공하는 모든 유효한 통찰력으로 당 끝 또는 트릭.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top