[javascript] {} 또는 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!').

내 추천

  1. 절대 사용하지 마십시오 new Object();-그것은 더 {};어리 석고 어리 석습니다.
  2. [];미리 정의 된 길이로 “빈”배열을 빠르게 만들어야하는 경우를 제외하고 항상 사용하십시오 .

답변

예, 차이가 있습니다. 동일하지 않습니다. 동일한 결과를 얻을 수 있지만 엔진은 두 가지 방식으로 다르게 작동합니다. 그중 하나는 객체 리터럴이고 다른 하나는 생성자입니다. 자바 스크립트에서 객체를 만드는 두 가지 방법입니다.

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 = {}

내 경험상 훨씬 더 일반적으로 사용되므로 ‘표준’을 채택하고 일부 입력을 저장하는 것이 가장 좋습니다.


답변

나는 여기{} 에있는 자바 스크립트 비디오 중 하나 에서 좋은 코딩 규칙 으로 추천 되었다고 생각 합니다. 의사 클래식 상속에 필요합니다. 이 방법은 이것이 고전적인 객체 지향 언어가 아니라 프로토 타입 언어임을 상기시켜줍니다. 따라서 생성자 함수를 사용할 때만 실제로 필요한 시간 입니다. 예를 들면 다음과 같습니다.newvar 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()더 많은 공간 을 차지 한다고 상상할 수 있습니다 .