>  기사  >  웹 프론트엔드  >  js의 프로토타입은 무엇인가요?

js의 프로토타입은 무엇인가요?

(*-*)浩
(*-*)浩원래의
2019-06-01 15:10:484835검색

Javascript도 객체지향 언어이지만 클래스 기반 언어가 아닌 프로토타입 기반 언어입니다.

js의 프로토타입은 무엇인가요?

JavaScript에서 객체 생성 기사에 언급된 내용: 생성자를 사용하여 객체를 생성하는 데 문제가 있습니다. 즉, 동일한 생성자의 여러 인스턴스에 대한 동일한 메서드가 다르기 때문에 프로토타입을 사용하여 공용 속성을 결합합니다. 모든 인스턴스 간에 공유 목적을 달성하기 위해 메서드가 추출되고 캡슐화됩니다.

함수로 정의된 객체에는 프로토타입 속성이 있으며, 프로토타입 속성은 프로토타입 객체를 가리킵니다. 프로토타입 객체에는 생성자 속성이 있으며, 이 생성자 속성은 생성자 객체를 가리키며, 이 생성자 객체는 바로 함수 자체입니다.

는 다음과 같이 의사 코드로 표현됩니다.

var function{
    prototype:prototype{
        constructor:constructor == function
    }
}

함수와 프로토타입의 관계

js에서 함수를 만들면 프로토타입 속성이 자동으로 생성됩니다. 함수를 가리키는 생성자 속성이 자동으로 얻어집니다.

예: 이전 프로토타입 모드를 사용하여

<script type="text/javascript">
function Person(){

}
Person.prototype.name="lxy";
Person.prototype.age=22;
Person.prototype.job="Software Engineer";
Person.prototype.sayName=function(){
    alert(this.name);
}
     
     var lxy=new Person();
     lxy.sayName();
     var personA=new Person();
     personA.sayName();
     alert(lxy.sayName()==personA.sayName());//true
</script>

인스턴스와 프로토타입 사이의 관계를 설명하기 위한 예로 개체를 만듭니다.

내부적으로 가리키는 속성(포인터)을 포함하는 생성자를 통해 인스턴스를 만듭니다. 생성자의 프로토타입 객체에.

예: Person 생성자 인스턴스 Person1과 Person2의 [[Prototype]] 특성은 모두 Person의 프로토타입을 가리킵니다.

참고: [[Prototype]] 연결은 인스턴스와 생성자 사이가 아니라 인스턴스와 생성자의 프로토타입 사이에 존재합니다.

이 포인터와 관련하여 ECMA-262에서는 [[Prototype]]이라고 합니다. [[Prototype]]에 액세스하는 표준 방법은 없지만 Firefox, Safari 및 Chrome은 각 객체에 대해 __protp__ 속성을 지원합니다. , 이 속성은 스크립트에 표시되지 않습니다.

위 내용은 js의 프로토타입은 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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