방법 1
function Person(n,a) {
this.name = n;
this.age = a;
if(이 인스턴스of Person){
alert('new call')
}else{
alert ('함수 호출');
}
}
var p = new Person('jack',30) // --> 새로운 호출
Person(); > 함수 호출
방법 2
function Person(n,a){
this.name = n;
this.age = a
if(this 인스턴스ofargs.callee){
alert(' 새 호출');
}else{
alert('함수 호출');
}
}
var p = new Person('jack',30); > 새 호출
Person(); // --> 함수 호출
방법 3
this.name = n
this.age = a; if(this.constructor === 인수 .callee){
alert('새 호출')
}else{
alert('함수 호출')
}
}
var p = new Person(' jack',30); // --> 새로운 호출
Person(); // --> 함수 호출
그런데 함수/클래스를 다음과 같이 사용할 경우 자신의 인스턴스 객체의 메소드를 호출할 때 문제가 발생합니다
코드를 복사하세요
this.age = a
if(this.constructor == =args.callee){
alert('new call' );
}else{
alert('function call')
}
}
var p = new Person ('jack',30); // 새 객체 먼저
p.fn = Person; // 자체 객체의 fn 속성에 함수/클래스 할당 p
p.fn(); 이 문장을 호출하면 "새 호출입니다."라는 메시지가 나오는데 이는 분명히 잘못된 것입니다
더 좋은 방법이 있을까요?