는 무엇입 javascript 해시 테이블의 구현을 방지하는 네임스페이스 객체의 충돌?
-
01-07-2019 - |
문제
첫째로 떨어져:내가 사용하고 오히려 모 구현을 자바스크립트로 포함된 스크립트 엔진을 위해 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 라이브러리할 수 있도록 제공하는 모든 유효한 통찰력으로 당 끝 또는 트릭.