jQuery와 함께 JavaScript의 접근성 및 코드 조직 문제
-
22-07-2019 - |
문제
프로그램에서 내 코드 순서에 문제가 있습니다. 지금은 IN에 몇 가지가 있습니다 document.ready(function() { } );
그리고 그것의 일부는 그것의 측면에서. 내 코드를 구성하거나 개선하기 위해 무엇이든 움직일 때마다 나는 무언가를 깨뜨릴 것입니다. 나는 선언 또는 액세스 수준의 순서로 인해 추측하고 있습니다 (예 : 외부의 무언가. document.ready(function {});
그 안에 무언가에 액세스 할 수 없습니다.
자바 스크립트가 현명하게 위치 해야하는 곳에 대한 통찰력이 있습니까?
모든 것이 안에 있어야합니다 document.ready(function() {});
?
외부에 무언가를 가질 이유가 있습니까? document.ready(function() {});
?
코드는 내부입니다 document.ready(function() {});
외부 코드로 접근 할 수 없습니까?
해결책
1 . 모든 것이 문서 안에 있어야한다.
아니요, 문서. 준비 기능은 사물을 초기화하고 이벤트 핸들러를 할당하는 것 등만이어야한다고 생각합니다.
2. document.ready (function () {});?
코드 업체 및 더 나은 코드 구성.
삼 . document.ready (function () {})의 코드입니다. 외부 코드로 접근 할 수 없습니까?
예, 문서에 생성 된 변수와 객체는 외부 범위에서 접근 할 수 없습니다.
다른 팁
모든 것이 문서 안에 있어야한다.
예 그리고 아니오. 대규모 JavaScript 응용 프로그램에서는 메인 컨트롤러를이 이벤트 핸들러의 글로벌 범위로 초기화합니다. 그러나 DOM이 준비 될 때까지 기다릴 필요가없는 코드가 있습니다. DOM에 의존하지 않는 코드. 나는 그것이 매우 간단하다고 생각합니다. 예를 들어,이 이벤트 핸들러 이외의 구성 객체 클래스, 기능 등을 선언합니다.
document.ready (function () {});?
물론, 그 이유는 위의 손길이 있습니다. 주로 DOM 상호 작용이 필요하지 않은 코드는 DOM이로드 될 때까지 기다리지 않아야합니다. 특히 DOM로드 (예 : 기능 정의, 구성 객체 등)와 비동기로 실행할 수있는 경우.
또한 하나의 이벤트 핸들러에 모든 코드를 포함시키지 않으면 내용을보다 정리하고 코드를 모듈화하고 적절한 설계 패턴을 사용할 수 있습니다.
document.ready (function () {})의 코드입니다. 외부 코드로 접근 할 수 없습니까?
다시, 그렇습니다. 당신이 그것을 로컬로 선언한다면 var
그렇다면 이벤트 핸들러에 로컬이므로 외부 범위에 의해 접근 할 수 없습니다. 그렇지 않으면 글로벌 범위에 있으며 외부 범위에 액세스 할 수 있습니다. 다음은 예입니다 (여기에 호스팅됩니다 : http://jsbin.com/uriqe)
자바 스크립트
var foo = function() {
alert(global);
return false;
}
$(document).ready(function() {
global = "you can see me!?";
alert("global is initiated");
});
HTML
<body>
<p><a href="#" onclick="foo()">click me</a></p>
</body>
onclick
눈에 띄지 않는 방법 이벤트 첨부 대신 $(document).ready()
의도적으로 질문/논쟁을 피하기 위해 의도적으로 사용됩니다. foo
접근 할 수 있습니다 global
폐쇄 속성을 통해.
편집하다: 나는 이전 문장에서 그것을 명확하게했다고 생각했지만 onclick
글로벌 범위와 폐쇄 속성 사이의 혼란을 피하기 위해 의도적으로 사용되지만 나는 사용을 옹호하지 않습니다 onlick
. 물론 그것은 나쁜 연습이며 당신은 그것을 사용해서는 안됩니다.