이 질문 What are the best practices to follow when declaring an array in Javascript?하이재킹 된 JavaScript 배열에 함수를 추가 할 수 있습니까?
관련이의이 "D. B. Cooper" 그들을 부르 자, 이제 클라이언트를 가정 해 봅시다되고, 다음 코드는 다른 자바 스크립트 코드를 먼저 실행해야합니다 첫 번째 요구 사항이 있습니다 또한
Array = function(){
alert('Mwahahahaha');
};
을, Cooper는 사용자 정의 함수가 객체 (하이재킹 된 객체가 아님)에 추가되어야한다고 요구합니다. 여유 것이다
Array.prototype.coolCustomFunction = function(){
alert('I have ' + this.length + ' elements! Cool!');
};
: Array
이 unhijacked 경우 예를 들어, 이것은 함께 할 것
var myArray = [];
myArray.coolCustomFunction();
그러나, 이것은 첫 번째 요구 사항과 호환되지 않습니다. 따라서 B. B. Cooper의 요구 사항을 어떻게 충족시킬 수 있습니까?
참고 : D.B. 심지어 해결책이 자신의 요구 사항을 충족시키는 데 도움이되도록 a test fiddle을 작성했습니다.
업데이트 :이 문제에 대한 unhijackable 크로스 브라우저 해결책을 찾기 위해 시도하십시오 도전을 좋아하는 분들을 위해 . 예를 들어, here's은 Array, Object, Array.prototype.constructor 및 Object.prototype.constructor를 가로채는 훨씬 더 하이재킹 된 테스트 케이스 (이 Bergi를 다시 포맷 해 주셔서 감사합니다)입니다. 지금까지는 브라우저 특정 솔루션이있을 수 있습니다 (Bergi's comment on his answer 참조). FF로 하이재킹하는 방법을 찾으면 알려주십시오.하지만 크로스 브라우저가 있는지 여부는 아직 명확하지 않습니다. 이것에 대한 해결책.
형식은 SO – rjz
에 새로운 포스터에 대한 연구 자료를 요구해야 다시 DB 쿠퍼의 요구 사항 문서를 보내기 모든 수요에 대한 사용 사례에 주장하고있다. :) – Quentin
@Quentin : 당신이 그를 찾을 수 있다면, 그것은 좋은 옵션이 될 것입니다 :) – Briguy37