인터넷에서 많은 JavaScript 프로젝트를 보았는데, 사용된 객체는 모두 {} 형식입니다.
예를 들어 jQuery, TinyMCE 등은 모두
형식입니다. 코드 복사 코드는 다음과 같습니다.
var Dialog =
{
int : function() { .. .. },
insert : function( ) { .... },
pop : function() { .... }
}
//호출은
Dialog.init()
저는 항상 함수 클로저를 사용해왔는데 내부 전용 멤버(함수, 변수)를 사용하는 것이 더 편리하다고 생각합니다.
function classDialog()
{
var box = "sdfsdf "; //init, insert 및 기타 함수에서 공용 변수를 호출하는 것은 매우 복잡합니다. 편리하고 내부 함수를 호출하는 것도 매우 편리합니다(예: search()를 직접 호출할 수 있음).
this.init = function() { .... };
this.insert = function() { . ... }; >
function search() { .... }
}
var Dialog = new classDialog ()
Dialog.init()
TinyMCE는 함수를 사용해야 하며 init 내부에 함수를 정의합니다: function() { } 하지만 이 경우 이 함수는 init에 의해서만 호출될 수 있으며 다른 메서드는 이 비공개 함수를 공유할 수 없습니다.
물론 저는요. 여러 공개 함수에 의해 호출되는 비공개 함수의 예를 아직 본 적이 없습니다.
function(){} 클로저를 사용하면 객체를 생성하는 데 매우 편리하기 때문에 모두에게 묻고 싶습니다. , {} 메서드가 왜 그렇게 널리 사용되나요?
function() {}인가요?
답변:
객체를 생성하기 위해 {}를 직접 사용하는 경우. 이 경우 객체가 거의 생성되지 않으며 일괄적으로 객체를 생성해야 할 때 생성자를 사용하여 객체를 인스턴스화하는 것이 매우 편리합니다. 구체적인 상황
두 가지는 전혀 다른 것입니다.
{}는 싱글톤(싱글톤 모드)으로 간주될 수 있습니다.
function(){}은 객체를 반환합니다. NEW가 반환될 때마다 다른 객체가 반환됩니다!
또한 위의 일부 학생들은 {}가 더 효율적이라고 말했습니다. 그리고 새로운 것을 사용할 필요가 없습니다. {}는 전역적으로 고정되어 있으며 임의로 확장될 수 있습니다.
일반적으로 {}는 정말 효율적이고 사용하기 쉽지만, 특정 메서드를 노출하고 싶지 않을 때는 함수를 사용하는 것이 더 좋습니다.