>  기사  >  웹 프론트엔드  >  js 객체 지향 디자인(생성자)_js 객체 지향 디자인에서는 {} 또는 function(){}을 사용하는 것이 더 낫습니까?

js 객체 지향 디자인(생성자)_js 객체 지향 디자인에서는 {} 또는 function(){}을 사용하는 것이 더 낫습니까?

WBOY
WBOY원래의
2016-05-16 18:00:27783검색

인터넷에서 많은 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가 반환될 때마다 다른 객체가 반환됩니다!

또한 위의 일부 학생들은 {}가 더 효율적이라고 말했습니다. 그리고 새로운 것을 사용할 필요가 없습니다. {}는 전역적으로 고정되어 있으며 임의로 확장될 수 있습니다.

일반적으로 {}는 정말 효율적이고 사용하기 쉽지만, 특정 메서드를 노출하고 싶지 않을 때는 함수를 사용하는 것이 더 좋습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.