스택큐힙리스트

자바스크립트 객체를 생성하는 동안 "컨스트럭터가 아닙니다" 예외가 발생했습니다. 본문

카테고리 없음

자바스크립트 객체를 생성하는 동안 "컨스트럭터가 아닙니다" 예외가 발생했습니다.

스택큐힙리스트 2023. 11. 24. 21:18
반응형

나는 다음과 같이 객체를 정의하고 있습니다:


function Project(속성, 프로젝트너비, 프로젝트높이) {
this.프로젝트높이 = 프로젝트높이;
this.프로젝트너비 = 프로젝트너비;
this.프로젝트비율 = this.GetProjectScale();
this.속성 = 속성;
this.현재레이아웃 = '';
this.CreateLayoutArray = function()
{....}
}

그런 다음 다음과 같이 인스턴스를 생성하려고 합니다:


var newProj = new Project(a,b,c);

하지만 다음과 같은 예외가 발생합니다:


Project는 생성자가 아닙니다.

무엇이 문제일까요? 많은 검색을 해봤지만, 여전히 무엇이 잘못되었는지 알 수 없습니다.

답변 1

질문에 게시된 코드는 해당 오류를 생성할 수 없습니다. 왜냐하면 Project는 사용자 정의 함수/유효한 생성자가 아니기 때문입니다.


function x(a,b,c){}
new x(1,2,3); // 오류가 없음

아마도 다음과 같은 작업을 수행한 것 같습니다:


function Project(a,b,c) {}
Project = {}; // 또는 Project = new Project
new Project(1,2,3); // -> TypeError: Project는 생성자가 아닙니다

var를 사용한 변수 선언은 호이스팅되어 코드의 나머지 부분보다 항상 먼저 평가됩니다. 따라서 이 또한 문제를 일으킬 수 있습니다:

function Project(){}
function localTest() {
new Project(1,2,3); // `Project`는 로컬 변수를 가리킵니다. 전역 생성자가 아닙니다!
//...일부 소음, `Project` 생성자가 사용된 것을 잊게 만듭니다
var Project = 1; // 먼저 평가됩니다
}

답변 2

제목: 자바스크립트 객체 생성 시 Constructor가 아님 예외 발생에 대한 이해
서론:
자바스크립트는 웹 개발에서 널리 사용되는 프로그래밍 언어로, 동적이고 유연한 특징을 가지고 있습니다. 객체는 자바스크립트에서 중요한 개념 중 하나이며, 객체를 생성할 때 종종 Constructor가 아님 예외가 발생하기도 합니다. 이번 글에서는 이러한 예외가 발생하는 이유와 해결 방법을 알아보겠습니다.
1. 예외 발생 이유:
Constructor가 아님 예외는 객체를 생성하는 과정에서 생성자 함수를 올바르게 사용하지 않을 때 발생합니다. 생성자 함수는 객체를 초기화하기 위해 사용되며, 일반적으로 대문자로 시작하는 이름을 가집니다. 그러나 생성자 함수를 정의하지 않은 경우, 객체를 생성할 때 해당 예외가 발생합니다.
2. 해결 방법:
가장 간단한 해결 방법은 생성자 함수를 올바르게 정의하는 것입니다. 생성자 함수는 일반적으로 `function` 키워드와 함께 정의되며, `this` 키워드를 통해 새로운 객체의 프로퍼티를 설정합니다. 생성자 함수는 `new` 키워드와 함께 호출되어야 하며, 생성자로서의 역할을 수행합니다.
예를 들어, 아래의 코드에서는 생성자 함수를 사용해 `Person` 객체를 초기화하는 방법을 보여줍니다.
```javascript
function Person(name, age) {
this.name = name;
this.age = age;
}
var john = new Person(John, 25);
console.log(john.name); // 출력: John
console.log(john.age); // 출력: 25
```
3. 주의 사항:
Constructor가 아님 예외를 피하기 위해 주의해야 할 몇 가지 사항이 있습니다.
- 생성자 함수 이름은 대문자로 시작합니다.
- 생성자 함수를 호출할 때 `new` 키워드를 사용합니다.
- 생성자 함수 내에서는 `this` 키워드를 사용하여 객체에 프로퍼티를 설정합니다.
결론:
자바스크립트에서 Constructor가 아님 예외는 객체 생성 시 생성자 함수를 정의하지 않거나 잘못 사용할 때 발생하는 문제입니다. 이를 해결하기 위해서는 생성자 함수를 올바르게 정의하고 호출하는 것이 중요합니다. 이러한 예외를 피하면서 객체를 정확하게 초기화할 수 있으며, 안정적인 자바스크립트 코드를 작성할 수 있습니다.

반응형
Comments