당신은 XUL 학교 튜토리얼 Javascript Object Management 지적되어 있어야합니다.
analyze
은 총칭입니다. 오버레이에는 브라우저 코드 자체와 추가 확장 코드가 공유하는 하나의 범위/네임 스페이스 만 있습니다. 따라서 브라우저 또는 다른 애드온에서 analyze
을 사용하고 붐을 사용하는 것이 가능합니다.
가능한 한 이름을 지정하여 피해야합니다. 예 :
function my_addon_id_analyze() ...
- 는 (의사)의 고유 이름으로 객체를 사용합니다.
if (!("org" in this)) {
this.org = {};
}
if (!("example" in org)) {
org.example = {};
}
org.example.addonid = {
analyze: function() ...
};
// call
org.example.addonid.analyze();
익명 기능으로 코드를 "숨기"도합니다. 이것은 DOM에서도 숨겨져 있으므로 더 이상 <button id="example.org.addonid.mybutton" onclick="analyze()">
이벤트 처리가 필요하지 않습니다. 하지만 항상 addEventListener
을 사용할 수 있습니다.
(function() {
"use strict";
function analyze() ...
// wire up an event handler instead of onlick
document.getElementById("example.org.addonid.mybutton").addEventListener("click", analyze);
})();
위, 같은 당신이 피하고 짧은/일반적인 이름의 일부/전부를 혼합 :
if (!("org" in this)) {
this.org = {};
}
if (!("example" in org)) {
org.example = {};
}
org.example.addonid = (function() {
function analyze() ...
function notvisibleoutside() ...
// return object of "exported"/"visible" functions.
return {
analyze: analyze
};
})();
// call
org.example.addonid.analyze()
을 또한, var
누락 명심 (또는 let
/const
) 선언은 전역 범위에서 변수를 암시 적으로 선언합니다. 예컨대 :
function abc() {
for (i = 0; i < 10; ++i) doSomething();
}
암시 (그러므로이 window.i
을 만듭니다 글로벌 범위 window
하는 XUL 창에서) 전역에 i
라는 이름의 변수를 선언합니다. 따라서 암시 적 선언은 충돌을 야기 할뿐만 아니라 준 메모리 누수를 일으킬 수 있습니다.
function call_me_to_leak_1MB() {
hugeArray = new ArrayBuffer(1<<20);
}
는 한 브라우저 창 대신에 변수로 즉시 수집 된 쓰레기를 가져 지역 변수를 사용하여 열려있는 생활 범위를 벗어나 window.hugeArray
를 선언합니다 (그리고 더 이상 다른 참조는 물론,있다).
strict mode을 사용하면 암시 적으로 오류가 나타나며 이러한 오류를 조기에 발견하고 피하는 데 도움이됩니다.
Javascript 부분이 너무 많습니다. 충돌 할 수있는 다른 것들이 여전히 있습니다.
- DOM IDS : 고유 한 사용
<button id="example.org.addonid.mybutton">
, 또는 그 이상의 CSS 친화적 <button id="example-org-addonid-mybutton">
(또는 addonid-mybutton
같은 적어도 뭔가) 대신 <button id="mybutton">
- CSS : 전혀 스타일의 임의 요소.
button { color: green; }
- 네 :
- 없음
#example-org-addonid-mybutton { color: green; }
- 의 chrome.manifest :
- 번호 :
content generic content/
- 네 :
content example-org-addonid content/
.