>  기사  >  웹 프론트엔드  >  자바스크립트의 new 사용법과 주의할 점_javascript 스킬

자바스크립트의 new 사용법과 주의할 점_javascript 스킬

WBOY
WBOY원래의
2016-05-16 19:13:181053검색
원본: JavaScript, We Hardly new Ya - Douglas Crockford.
http://yuiblog.com/blog/2006/11/13/javascript-we-hardly-new-ya/
인용문
JavaScript는 프로토타입 기반 언어이지만 고전적인 객체 지향 언어처럼 보이게 만드는 새로운 연산자가 있습니다. 이는 또한 프로그래머를 혼란스럽게 하고 의심스러운 프로그래밍 패턴으로 이어집니다.

사실 JavaScript에서는 new Object()를 사용할 필요가 없습니다. 리터럴 형식인 {}로 바꾸세요.

마찬가지로 new Array()를 사용하지 말고 대신 리터럴 []을 사용하세요. JavaScript의 배열은 Java의 배열처럼 작동하지 않으며 Java와 유사한 구문을 사용하면 혼란스러울 뿐입니다.

마찬가지로 새 숫자, 새 문자열 또는 새 부울을 사용할 필요가 없습니다. 이들을 사용하면 쓸모없는 유형 캡슐화 개체가 생성됩니다. 간단한 리터럴을 사용하세요.

함수 개체를 생성하기 위해 새 함수를 사용하지 마세요. 함수 표현식을 사용하는 것이 더 좋습니다. 예:

frames[0].onfocus = new Function("document.bgColor='antiquewhite'")

더 나은 작성 방법은 다음과 같습니다.

frames [0] .onfocus = function () {document.bgColor = 'antiquewhite';};

두 번째 형식을 사용하면 스크립트 컴파일러가 함수 본문을 더 빨리 볼 수 있으므로 함수의 구문 오류가 더 빨리 감지됩니다. 밖으로. 때때로 프로그래머는 내장 함수가 어떻게 작동하는지 이해하지 못하기 때문에 new Function을 사용합니다.

selObj.onchange = new Function(”dynamicOptionListObjects[”
     dol.index ”].change(this)”);

문자열을 함수 본문으로 사용하는 경우 컴파일 장치에서는 이를 볼 수 없습니다. 문자열 표현식을 함수 본문으로 사용하는 경우에도 이를 볼 수 없습니다. 더 나은 접근 방식은 맹목적으로 프로그래밍하지 않는 것입니다. 함수를 반환하는 함수 호출을 함으로써 바인딩하려는 값을 값별로 명시적으로 전달할 수 있습니다. 이를 통해 루프에서 일련의 selObj 개체를 초기화할 수 있습니다.

selObj.onchange = 함수(i) {
반환 함수() {
dynamicOptionListObjects[i].change(this);

};
}(dol .index);

함수에 직접 new를 사용하는 것은 결코 좋은 생각이 아닙니다. 예를 들어, 새 함수는 새 개체를 생성하는 데 이점을 제공하지 않습니다.

myObj = new function () {
this.type = 'core';
};

더 나은 방법은 더 가볍고 빠른 객체 리터럴을 사용하는 것입니다. .

myObj = {
type: 'core'
};

생성해야 하는 개체에 개인 변수나 함수에 액세스해야 하는 메서드가 포함되어 있는 경우 더 좋은 방법입니다. 여전히 new 사용을 피하세요.

var foo = new function() {
function processMessages(message) {
Alert(”Message: ” message.content);
}
this.init = function() {
                                                  new를 사용하여 함수를 호출합니다. out out  out out out out out 오른쪽 outoleole 오른쪽 outole outole out out out out out‐‐‐‐‐‐ ‐‐‐‐‐‐''' 프로토타입 개체. 이는 아무런 이점도 없이 메모리만 낭비합니다. new를 사용하지 않으면 객체 체인에서 쓸모없는 프로토타입 객체를 유지할 필요가 없습니다. 따라서 ()를 사용하여 팩토리 함수를 올바르게 호출할 수 있습니다.

var foo = function () {
function processMessages(message) {
Alert(”Message: ” message.content);
}
return {
init: 함수 () {
                                                                                                                                 new 연산자를 사용하는 곳은 고대 생성자 함수를 호출할 때입니다. 생성자 함수를 호출할 때는 반드시 new를 사용해야 합니다. 때로는 새로운 것을 얻기 위해 들어올 수도 있지만 때로는 그렇지 않은 것이 더 나을 때도 있습니다.




인용문

참고 원문 : http://www.uiplanet.com/taobao/2007/05/15/ 정말 자바스크립트를 작성할 수 있나요? /
다음 영어 문서를 참조할 수 있습니다. http://msdn.microsoft.com/msdnmag/issues/07/05/JavaScript/default.aspx?loc=en#S6

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.