> 웹 프론트엔드 > JS 튜토리얼 > 객체지향 자바스크립트(1)_자바스크립트 스킬

객체지향 자바스크립트(1)_자바스크립트 스킬

WBOY
풀어 주다: 2016-05-16 19:24:33
원래의
1065명이 탐색했습니다.

하나. 프로토타입 기반의 전통적인 접근 방식
엄밀히 말하면 Javascript의 "클래스"는 엄밀한 의미에서 실제 클래스가 아닙니다. 선언된 객체와 클래스 사이에는 다음과 같은 관계가 있습니다. 🎜>Instance.__proto__=InstanceClass.prototype(즉, 지원되지 않음)
위 설명: 인스턴스의 속성(__proto__)이 클래스의 prototpye와 동일하다는 것을 알 수 있습니다. 인스턴스의 "__proto__"가 발생합니다. 클래스의 "프로토타입"에 연결하려면 프로토타입 체인(프로토타입)을 통해 해당 메서드를 찾고 확장하면 해당 메서드(Method)와 해당 속성(Property)이 둘 다 Public이라는 것을 알 수 있습니다(물론 여러분은 즉, Private을 사용할 수도 있습니다. 즉, 이 없이도 사용할 수 있습니다. 프로토타입은 실제로 메서드를 컬렉션으로 기록하는 데 사용되는 객체입니다.
클래스 A를 선언한다고 가정하면 다음과 같습니다
function A(){
this.className="ClassA"; //정확하게는 Public 속성을 추가합니다. 클래스 이름은 Private이어야 합니다
}
//메서드 추가
A.prototype.getClassName=function() {
return this.className; //이것은 프로토타입이 아니라 A를 참조합니다.
}
//객체 선언
var AObj=new A();alert(AObj.__proto__= =A.prototype); //ie에서는 유효하지 않음, ff에서는 true, 위 내용을 나타냄 검증이 정확함
// 객체 속성을 살펴보겠습니다
/*
이를 사용하므로 className 공개이며 마음대로 수정하거나 읽을 수 있습니다
보호하려면 전용을 사용하려면 보호를 위해 이 접두사를 제거하면 됩니다
읽을 때는 공개 방법, 즉 프로토타입 아래 메소드:
A.prototype.getClassName=function(){
return className ; 이 시점에서는 나중에 설명할 두 번째 방법만큼 좋지는 않습니다
*/
"프로토타입"에 대해
Javascrīpt는 시스템 내에서 "상속"을 사용하지 않았기 때문에(매우 가능성이 높음) ), 따라서 클래스 아래의 프로토타입은 모든
최상위 객체를 가져옵니다. 나중에 상속할 때 다음과 같은 공식을 볼 수 있습니다.
child.prototype=new parent()
따옴표 안의 상속이라는 단어는 다음을 의미합니다. 상속이 있더라도 진정한 의미의 상속은 아니며 프로토타입을 통해서만 얻을 수 있다는 것입니다.
인스턴스를 사용하여 메서드를 클래스로 확장하려면 여기서 __proto__ 속성을 언급해야 합니다.




코드를 복사하세요.

}
이제 이해하셔야 합니다.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿