나는 Node.JS 및 ExpressJS을 사용하고 있습니다. 다음 코드는 내 자신의 메시지로 Errors 객체를 확장하는 데 사용되며 충분히 잘 작동하지만, __proto__
은 비표준임을 이해합니다.__proto__없이 다시 작성하는 방법
__proto__
없이 다음 코드를 어떻게 다시 작성합니까?
var AccessDenied = exports.AccessDenied = function(message) {
this.name = 'AccessDenied';
this.message = message;
Error.call(this, message);
Error.captureStackTrace(this, arguments.callee);
};
AccessDenied.prototype.__proto__ = Error.prototype;
왜'exports = module.exports = CustomException'을 설정했는지 궁금합니다. 이것은 무엇을 하는가? 나는 당신이 파일에서'exports' 또는'module.exports'를 사용했는데 둘 중 하나를 사용하지 않았다고 생각했습니다. –
@ShaneStillwell'exports'는'module.exports'를 가리키고 있습니다. 기본적으로이 키는 빈 개체이므로 새 키를 둘 중 하나에 할당하면 작동합니다 (예 :'exports.thing = 42'). 그러나,'exports = 42'를하면 모듈에 국한된'exports' 변수를 덮어 쓰지 만'module.exports'는 여전히 빈 객체를 가리 킵니다. 둘 다 사용하는 것은 불필요한 것처럼 보일 수 있지만, 다른 방법으로도 작동합니다 :'module.exports'를 덮어 쓰면'exports'는 여전히 그 빈 객체를 가리 킵니다. 따라서 모듈의 다른 곳에서 문제가 발생하지 않도록하려면 두 모듈 모두에 할당하여 덮어 씁니다. – PPvG