{} 또는 new Object ()를 사용하여 JavaScript로 빈 객체를 만드시겠습니까?
JavaScript에서 빈 객체를 만드는 방법 에는 두 가지가 있습니다.
var objectA = {}
var objectB = new Object()
스크립트 엔진이 처리하는 방식에 차이가 있습니까? 다른 것을 사용하는 이유가 있습니까?
마찬가지로 다른 구문을 사용하여 빈 배열을 만들 수도 있습니다.
var arrayA = []
var arrayB = new Array()
사물
사용하는 이점이 없습니다 new Object();
- 반면, {};
코드를 더욱 작고, 더 읽기 쉽게 만들 수 있습니다.
빈 객체를 정의하는 것은 기술적으로 동일합니다. {}
구문은 짧고 깔끔한 (이하 자바 틱)이며, 즉시 개체 인라인을 채울 수 있습니다 -과 같이 :
var myObject = {
title: 'Frog',
url: '/img/picture.jpg',
width: 300,
height: 200
};
배열
배열의 경우, 한 가지 예외를 제외하고는 new Array();
over를 사용하면 거의 이점이 없습니다 [];
.
var emptyArray = new Array(100);
모든 슬롯이 포함 된 100 개의 항목 길이 배열을 생성 undefined
합니다. 특정 상황 (예 :)에서 유용하거나 유용 할 수 있습니다 (new Array(9)).join('Na-Na ') + 'Batman!'
.
내 추천
- 절대로 사용하지 마십시오.
new Object();
'{}'보다 복잡하고 어리 석습니다. [];
미리 정의 된 길이로 "빈"배열을 빠르게 만들어야하는 경우를 제외하고 항상 사용하십시오 .
예, 차이가 있습니다. 동일하지 않습니다. 동일한 결과를 얻을 수 있지만 엔진은 두 가지 방식으로 다르게 작동합니다. 그중 하나는 객체 리터럴이고 다른 하나는 생성자입니다. 자바 스크립트에서 객체를 만드는 두 가지 방법입니다.
var objectA = {} //This is an object literal
var objectB = new Object() //This is the object constructor
JS에서는 모든 것이 객체이지만 new Object ()를 사용하여 다음 사항에 대해 알고 있어야합니다. 매개 변수를 수신 할 수 있으며 해당 매개 변수에 따라 문자열, 숫자 또는 빈 오브젝트 만 작성합니다.
예를 들어 new Object(1)
,는 숫자를 반환합니다. new Object("hello")
문자열을 반환합니다. 즉, 개체 생성자가 매개 변수에 따라 개체 생성을 문자열, 숫자 등과 같은 다른 생성자에게 위임 할 수 있음을 의미합니다. 동적 데이터를 관리 할 때이 점을 명심해야합니다. 객체 생성
많은 제작자들은 특정 리터럴 표기법을 대신 사용할 수있을 때 객체 생성자를 사용하지 않는 것이 좋습니다. 여기서 생성하는 것이 코드에서 기대하는 것임을 확신 할 수 있습니다.
자세한 내용을 찾으려면 javascript의 리터럴 표기법과 생성자 간의 차이점에 대해 자세히 읽어 보는 것이 좋습니다.
이것들은 최종 결과가 같지만 리터럴 구문을 사용하면 JSON 구문 (JavaScript 리터럴 객체 구문의 문자열 기반 서브 세트)에 익숙해 지도록 도울 수 있으므로 들어가는 것이 좋습니다. .
다른 한 가지 : new
연산자 사용을 잊어 버린 경우 미묘한 오류가 발생할 수 있습니다 . 따라서 리터럴을 사용하면 해당 문제를 피할 수 있습니다.
궁극적으로 상황과 선호도에 따라 다릅니다.
오브젝트 및 배열 리터럴 구문 {} / []은 JavaScript 1.2에서 도입되었으므로 4.0 이전의 Netscape Navigator 버전에서는 사용할 수 없으며 구문 오류가 발생합니다.
내 손가락은 여전히 새로운 Array ()를 말하지만, 나는 아주 노인입니다. 고맙게도 Netscape 3는 오늘날 많은 사람들이 고려해야 할 브라우저가 아닙니다 ...
var objectA = {}
내 경험상 훨씬 더 일반적으로 사용되므로 '표준'을 채택하고 타이핑을 저장하는 것이 가장 좋습니다.
나는 여기{}
에있는 자바 스크립트 비디오 중 하나 에서 좋은 코딩 규칙 으로 추천 되었다고 생각 합니다. 의사 클래식 상속에 필요합니다. 이 방법은 이것이 고전적인 객체 지향 언어가 아니라 원형 언어임을 상기시켜줍니다. 따라서 생성자 함수를 사용할 때만 실제로 필요한 시간 입니다. 예를 들면 다음과 같습니다.new
var obj = {};
new
var Mammal = function (name) {
this.name = name;
};
Mammal.prototype.get_name = function () {
return this.name;
}
Mammal.prototype.says = function() {
return this.saying || '';
}
그런 다음 다음과 같이 사용됩니다.
var aMammal = new Mammal('Me warm-blooded');
var name = aMammal.get_name();
반대로 사용 {}
하는 또 다른 이점 new Object
은 JSON 스타일 객체 리터럴을 수행하는 데 사용할 수 있다는 것입니다.
배열 인스턴스화 성능
길이가없는 배열을 생성하려는 경우 :
var arr = [];
보다 빠르다 var arr = new Array();
특정 길이의 빈 배열을 만들려면
var arr = new Array(x);
보다 빠르다 var arr = []; arr[x-1] = undefined
;
벤치 마크를 보려면 다음을 클릭하십시오. https://jsfiddle.net/basickarl/ktbbry5b/
그러나 둘 다의 메모리 공간을 모르는 경우 new Array()
더 많은 공간 을 차지 한다고 상상할 수 있습니다 .
이것은 본질적으로 동일합니다. 더 편리한 것을 사용하십시오.
OK , 같은 일을하는 두 가지 방법이 있습니다! 하나는 호출 object literal
되고 다른 하나는 함수입니다 constructor
!
그러나 계속 읽고 싶습니다. 공유하고 싶은 몇 가지가 있습니다.
를 사용 {}
하면 코드를 더 읽기 쉽게 만들면서 Object
권장하지 않는 내장 함수 또는 인스턴스를 만들 수 있습니다 .
또한 객체 함수는 함수와 같은 매개 변수를 가져옵니다 Object(params)
...하지만 {}
JavaScript에서 객체를 시작하는 순수한 방법입니다 ...
객체 리터럴을 사용하면 다른 개발자가 코드를 훨씬 더 깨끗하고 읽기 쉽게 읽을 수 있으며 JavaScript의 모범 사례와 인라인됩니다 ...
Javascript의 Object는 거의 모든 것이 될 수 있지만 Javascript 객체 {}
만 가리키고 작동 방식을 테스트하려면 Javascript 코드 또는 콘솔에서 아래를 수행하십시오.
var n = new Object(1); //Number {[[PrimitiveValue]]: 1}
놀랍게도, 그것은 숫자를 만들고 있습니다!
var a = new Object([1,2,3]); //[1, 2, 3]
그리고 이것은 배열을 만들고 있습니다!
var s = new Object('alireza'); //String {0: "a", 1: "l", 2: "i", 3: "r", 4: "e", 5: "z", 6: "a", length: 7, [[PrimitiveValue]]: "alireza"}
그리고이 이상한 결과 String
!
따라서 객체를 만드는 경우 표준 코드를 사용하고 위와 같은 코드 사고를 피하기 위해 객체 리터럴을 사용하는 {}
것이 좋습니다. 내 경험에서 성능을 사용하는 것이 더 좋습니다!
참고 URL : https://stackoverflow.com/questions/251402/create-an-empty-object-in-javascript-with-or-new-object
'development' 카테고리의 다른 글
Windows 명령 프롬프트 출력 표시 및 파일로 리디렉션 (0) | 2020.03.01 |
---|---|
MVC 3에서 현재 페이지 URL을 얻는 방법 (0) | 2020.03.01 |
자바 날짜 대 달력 (0) | 2020.02.29 |
Windows cmd에서 사용자 입력을 요청하고 다른 명령에서 결과를 사용하려면 어떻게합니까? (0) | 2020.02.29 |
Windows 8 런타임 (WinRT / Windows Store 앱 / Windows 10 Universal App)은 Silverlight 및 WPF와 어떻게 다릅니 까? (0) | 2020.02.29 |