JavaScript 에서 함수 가 new 인지()호출 인지 판단 하 는 차이 점 설명

1449 단어 판단 함수new
방식 1
 
function Person(n,a){
this.name = n;
this.age = a;
if(this instanceof Person){
alert('new ');
}else{
alert(' ');
}
}
var p = new Person('jack',30); // --> new
Person(); // -->
방식 2
 
function Person(n,a){
this.name = n;
this.age = a;
if(this instanceof arguments.callee){
alert('new ');
}else{
alert(' ');
}
}
var p = new Person('jack',30); // --> new
Person(); // -->
방식 3
 
function Person(n,a){
this.name = n;
this.age = a;
if(this.constructor === arguments.callee){
alert('new ');
}else{
alert(' ');
}
}
var p = new Person('jack',30); // --> new
Person(); // -->
완벽 해 보이 지만 함수/류 를 자신의 인 스 턴 스 대상 으로 하 는 방법 을 호출 할 때 문제 가 발생 합 니 다
 
function Person(n,a){
this.name = n;
this.age = a;
if(this.constructor === arguments.callee){
alert('new ');
}else{
alert(' ');
}
}
var p = new Person('jack',30); // new
p.fn = Person; // / Person p fn
p.fn(); // “ new ”,
더 좋 은 방법 이 있 습 니까?

좋은 웹페이지 즐겨찾기