반응형
Notice
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 데이터베이스
- 알고리즘
- 자바스크립트
- 컴퓨터공학
- 보안
- 빅데이터
- 딥러닝
- 데이터과학
- 클라우드컴퓨팅
- 소프트웨어공학
- 사이버보안
- 버전관리
- 파이썬
- 데이터구조
- 웹개발
- 프로그래밍언어
- Yes
- 소프트웨어
- 자료구조
- 컴퓨터비전
- 인공지능
- 네트워크보안
- 프로그래밍
- 머신러닝
- 2
- 데이터분석
- 코딩
- I'm Sorry
- 컴퓨터과학
- 네트워크
Archives
- Today
- Total
스택큐힙리스트
자바스크립트 객체를 생성하는 동안 "컨스트럭터가 아닙니다" 예외가 발생했습니다. 본문
반응형
나는 다음과 같이 객체를 정의하고 있습니다:
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