현재 저는 수많은 JavaScript, jQuery, Microsoft 클라이언트 JavaScript 및 기타 라이브러리를 사용하는 레거시 웹 페이지에서 작업하고 있습니다. 결론-비즈니스가 정당화 할 수 없기 때문에 전체 페이지를 처음부터 다시 작성할 수 없습니다. 그래서 … 그게 바로 그 거예요. 어쨌든, 변수로 전역 네임 스페이스를 오염시켜야합니다. 제가 생각했던 세 가지 옵션이 있습니다.
-
일반 JavaScript 선언을 사용하여 저장 / 검색하십시오.
var x = 0;
-
jQuery를 사용하여 DOM 태그에 값을 저장 / 검색-
$("body").data("x", 0);
-
숨겨진 양식 필드를 사용하고 jQuery로 값을 설정 / 검색합니다.
$("whatever").data("x", 0);
더 좋은 방법이 있습니까? 나는 기존의 코드 더미를 보았고 변수가 함수에서 범위가 지정 될 수 있다고 생각하지 않습니다.
답변
다음과 같이 jQuery 객체 내에 네임 스페이스를 만들 수 있습니다.
$.mynamespace = {
myVar : "something",
myVar2 : "somethingElse"
};
또는:
$.mynamespace = {};
$.mynamespace.myVar = "something";
$.mynamespace.myVar2 = "somethingElse";
‘mynamespace’라는 이름의 플러그인 메서드는 덮어 쓰여 지므로 적절한 이름을 사용하십시오.
답변
나에게이 상황을 처리하는 가장 좋은 방법은 창 개체에 개체를 정의하는 것입니다.
window.my_config =
{
my_var1 : 1,
my_var1 : 2,
my_var1 : 3
};
이렇게하면 스코프가 깔끔하고 깨끗하게 유지됩니다. 그리고 window.my_config
코드를 보는 사람을 사용하여 전역에 액세스 할 때마다 전역이 액세스되고 있음을 알 수 있습니다.
답변
전역 범위에 해시를 만들고 네임 스페이스로 사용할 수 있습니다.
MyNamepace={}
MyNamespace.newvar = 'value'
// MyNamespace.newvar => 'value'
답변
내 연습을 여러분과 공유하기 만하면이 개체가 텍스트 상자가 될 페이지에서 작업하는 것처럼 필요한 JavaScript 파일에 전역 개체 / var를 합리적인 접두사로 만들고 이름을 지정합니다.
g_TxtMyValue = 'value'; // g_ specifies it to be a global variable, it is one
// of the many conventions used
둘 이상의 전역 변수가있는 경우 다음과 같은 네임 스페이스도 가질 수 있습니다.
my_txt = {}; // For a real site I would use a prefix relative to the project
// name instead of "my".
my_txt.testValueOne = 'Value one';
my_txt.testValueOne = 'Value two';
이러한 변수는 초기화 된 후 웹 사이트 전체에서 사용할 수 있습니다.
이게 도움이 되길 바란다.
답변
밑줄을 사용하십시오 isEmpty()
.
_.isEmpty('')
반환 true
됩니다.
답변
짧은 알림 :
fancybox가 AJAX를 수행하고 있습니까 (즉, iFrame 내에서로드되면 close 메소드에 “parent”를 추가해야 함). 다음과 같이 :
parent.$.fancybox.close();