var err1 = Error('message');
var err2 = new Error('message');
무엇이 다른가요? 크롬 콘솔에서 그들을보고, 그들은 동일하게 보입니다. 동일한 속성 및 동일한 __proto__
체인. 거의 Error
처럼 보이는 공장처럼 행동합니다.오류 ('msg') throws 새 오류 ('msg')
올바른 것은 무엇이며 그 이유는 무엇입니까?
var err1 = Error('message');
var err2 = new Error('message');
무엇이 다른가요? 크롬 콘솔에서 그들을보고, 그들은 동일하게 보입니다. 동일한 속성 및 동일한 __proto__
체인. 거의 Error
처럼 보이는 공장처럼 행동합니다.오류 ('msg') throws 새 오류 ('msg')
올바른 것은 무엇이며 그 이유는 무엇입니까?
둘 다 좋습니다. 이 명시 적으로 언급되어 the specification :
는 ... 따라서 함수 호출
Error(…)
가 동일한 인수 오브젝트 생성 식new Error(…)
동일하다.Array
이Object
는 ... 오류의 경우 말했다if (!(this instanceof Array)){ return new Array(arguments);}
같은 모든 체크 뭔가,이 경우에도 필요하지 않은 것 :
ES6에서도 마찬가지입니까? – paulmelnikow
Error
사실 거의 모든 기본 생성자가 수행 공장처럼 행동 않습니다 각각 포함한 모든 기본 생성자가 인 ECMAScript에 정의되어
throw {message:"You've been a naughty boy",
context: this,
args: arguments,
more:'More custom info here'};
나는 완전히 동의하지 않을까 두렵다. 'String ("abc")'는'String' 객체를 생성하지 않지만'new String ("abc")는 생성합니다. – pimvdb
@pimvdb : true, 그것을'Object' =>'Object ('foo')'로 변경했습니다. 문자열 객체를 반환합니다. 그것의 일에와 있습니다. 거의 모든 네이티브 생성자가 약간 잘못되었습니다 ...'Number ','Boolean','Date','String' 모두 ...'Array','Object','Error'는하지만'Event'와 모든 DOMxxxx-api 생성자는 에러를 던집니다. –
'new Array (arguments)'는'Array (1, 2, 3)'가하는 일을 정확하게 수행하지 않는다고 생각하십시오. 하지만 아마도 나는 단지 질질 마시고있다. :) – pimvdb
:
Error
객체를 던져 ...throw 'Bad things happened';
너무심지어 디버깅을위한 객체 리터럴을 던질 수, 작동합니다 'new'없이 호출 될 때의 동작. –
또한 [새 오류()가'Error()'보다 더 낫지 않습니까?] (http://stackoverflow.com/q/38759428/1048572) – Bergi