>  기사  >  웹 프론트엔드  >  javascript의 constructor_basic 지식에 대한 간략한 토론

javascript의 constructor_basic 지식에 대한 간략한 토론

亚连
亚连원래의
2018-05-21 10:16:20883검색

이제 자바스크립트의 생성자에 대해 간단히 설명하겠습니다. 이제 그것을 여러분과 공유하고 모든 사람에게 참고 자료로 제공하겠습니다.

생성자, 생성자, 우리 모두는 이 이름에 익숙합니다. 생성자는 항상 현재 객체를 생성하는 생성자를 가리킵니다.

여기서 한 가지 주의할 점은 각 함수에는 프로토타입 속성이 있는데, 이 프로토타입의 생성자가 이 함수를 가리키는데, 이때 이 함수의 프로토타입을 수정하던 중 사고가 발생했습니다.

function Person(name,age){
  this.name = name;
  this.age = age;
}

Person.prototype.getAge = function(){
  return this.age;
}
Person.prototype.getName = function(){
  return this.name;
}

var p = new Person("Nicholas",18);
console.log(p.constructor); //Person(name, age)
console.log(p.getAge()); //18
console.log(p.getName()); //Nicholas

와 같은 경우 그러나 다음과 같은 경우에는

function Person(name,age){
  this.name = name;
  this.age = age;
}

Person.prototype = {
  getName:function(){
    return this.name;
  },
  getAge:function(){
    return this.age;
  }
}

var p = new Person("Nicholas",18);
console.log(p.constructor); //Object()
console.log(p.getAge()); //18
console.log(p.getName()); //Nicholas

결과 생성자가 변경되었습니다.

그 이유는 프로토타입 자체도 객체이기 때문입니다. 위 코드는

Person.prototype = new Object({
  getName:function(){
    return this.name;
  },
  getAge:function(){
    return this.age;
  }
});

와 동일합니다. 생성자는 항상 현재 객체를 생성하는 생성자를 가리키기 때문에 위 코드의 출력이 라는 것을 이해하는 것은 어렵지 않습니다. p.constructor는 객체입니다.

프로토타입을 수정한 후에도 생성자가 여전히 Person을 가리키도록 하려면 어떻게 해야 하나요? 간단합니다. Person.prototype.constructor에 직접 값을 할당하면 됩니다.

Person.prototype = {
  constructor:Person,
  getName:function(){
    return this.name;
  },
  getAge:function(){
    return this.age;
  }
}

위 내용은 제가 모든 사람을 위해 편집한 내용입니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다.

관련 기사:

사진 자르기 및 Javascript

JavaScript 배열(배열) 객체 사용 정보

사진 자르기 및 를 사용하여 저장하는 간단한 구현 자바스크립트

위 내용은 javascript의 constructor_basic 지식에 대한 간략한 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.