문제

있다 두 개의 다른 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(); ~ 위에 []; - 한 가지 사소한 예외 :

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") 문자열을 반환하면 객체 생성자가 매개 변수를 위임 할 수 있음을 의미합니다. 매개 변수에 대한 객체 작성을 문자열, 숫자 등과 같은 다른 생성자에게 제작자에게 생성 할 수 있습니다 ... 동적 데이터를 관리 할 때이를 염두에 두는 것이 매우 중요합니다. 물체 만들기 ..

많은 저자는 특정 문자 그럴 표기법을 대신 사용할 수있을 때 객체 생성자를 사용하지 말 것을 권장합니다. 여기서 당신은 당신이 만들고있는 것이 코드에 기대할 것으로 예상되는지 확인할 것입니다.

더 자세한 내용을 찾으려면 리터럴 표기법과 자바 스크립트의 생성자의 차이점에 대해 추가로 읽을 것을 제안합니다.

이것들은 동일한 최종 결과를 가지고 있지만, 문자 구문을 사용하면 JSON (JavaScript 문자 그럴 객체 구문의 문자열 서브 세트)에 익숙해 지도록하는 데 도움이 될 수 있다고 덧붙입니다. .

다른 한 가지 : 사용하는 것을 잊어 버린 경우 미묘한 오류가있을 수 있습니다. new 운영자. 따라서 리터럴을 사용하면 그 문제를 피할 수 있습니다.

궁극적으로 상황과 선호도에 따라 다릅니다.

객체 및 배열 리터럴 구문 {}/[]은 JavaScript 1.2에서 도입되었으므로 4.0 이전 Netscape Navigator 버전에서는 사용할 수 없으며 구문 오류가 발생합니다.

내 손가락은 여전히 ​​new Array()라고 말하지만 나는 아주 나이가 많습니다.다행히도 Netscape 3은 오늘날 많은 사람들이 고려해야 할 브라우저가 아닙니다.

var objectA = {}

훨씬 빠르고 내 경험에 따라 더 일반적으로 사용되므로 '표준'을 채택하고 일부 타이핑을 저장하는 것이 가장 좋습니다.

나는 믿는다 {} JavaScript Vids 중 하나에서 권장되었습니다 여기 좋은 코딩 컨벤션으로. new 유사전 상속에 필요합니다. 그만큼 var obj = {}; Way는 이것이 고전적인 대상 지향 언어가 아니라 프로토 타입 언어라는 것을 상기시키는 데 도움이됩니다. 따라서 당신이 정말로 필요한 유일한 시간 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() 더 많은 공간을 차지합니다.

이것은 본질적으로 같은 것입니다. 더 편리한 것을 사용하십시오.

확인, 똑같은 일을하는 두 가지 방법이 있습니다! 하나는 호출됩니다 object literal 그리고 다른 하나는 기능입니다 constructor!

그러나 읽으십시오. 공유하고 싶은 몇 가지가 있습니다.

사용 {} 인스턴스를 만드는 동안 코드를 더 읽기 쉽게 만듭니다. Object 또는 기타 내장 기능을 권장하지 않습니다 ...

또한 객체 함수는 기능이므로 매개 변수를 얻습니다. Object(params)... 하지만 {} JavaScript에서 객체를 시작하는 순수한 방법입니다 ...

Object Liceral을 사용하면 코드가 다른 개발자를 위해 훨씬 깨끗하고 쉽게 읽을 수 있으며 JavaScript의 모범 사례가 인라인됩니다 ...

JavaScript의 객체는 거의 모든 것이 될 수 있지만 {} 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!

따라서 객체를 만드는 경우, 객체 리터럴을 사용하고 표준 코드를 사용하고 위와 같은 코드 사고를 피하기 위해, 성능 현명한 사용을 사용하는 것이 좋습니다. {} 내 경험이 더 좋습니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top