는 단순히 기능의 인스턴스를 만들 수 있습니다 당신은 함수가 객체 알고있다. 다른 사용자 정의 객체의 인스턴스를 만들 수없는 이유는 무엇입니까?
"기능의 인스턴스를 만들 수 있습니다."라고 말하는 것은 정확하지 않습니다. new
키워드는 오해의 소지가 있습니다. 실제로는 그렇지 않을 때 클래스를 사용하여 객체 지향을 구현하는 것처럼 보입니다.
new A()
으로 실제로하고있는 일은 생성자 함수 A
을 사용하여 개체를 생성하는 것입니다. new
키워드는 A
에서 객체를 반환하는 JavaScript 인터프리터 - 특히 this
으로 참조되는 객체를 A
으로 반환하도록 지시합니다.
편집 : b
을 어떻게 변경하여 인스턴스를 만들 수 있습니까?
예에서 b
은 개체 (var b={};
)입니다. b
을 생성자 함수로 변경하면이를 사용하여 객체를 만들 수 있습니다. (규칙에 따라 자바 스크립트에서 생성자 함수는 대문자로 시작합니다.) 그래서
:에
function B() {
}
var c = new B();
당신은 B
의 prototype
객체에 일을 추가 할 수 있습니다, 그들은 너무 c
에 액세스 할 수 있습니다 (그리고 당신이 B
을 사용하여 만든 다른 개체) :
function B() {
}
B.prototype.NAME = 'B';
B.prototype.hello = function() {
alert('Hello!');
}
var c = new B();
c.NAME // 'B'
c.hello() // alerts 'Hello!'
당신은'A = {} 선언하는 경우는, 의미, 예를 들어,'? – Andre
인스턴스는 "생성자"또는 객체를 "생성"하는 작업 단위에서 "생성"되어야하므로 "생성자"의 문자 적 의미에서 - 따라서 함수 "가되어야합니다. –