>웹 프론트엔드 >JS 튜토리얼 >JS 특권 메소드 정의 기능과 퍼블릭 메소드와의 차이점_javascript 기술

JS 특권 메소드 정의 기능과 퍼블릭 메소드와의 차이점_javascript 기술

WBOY
WBOY원래의
2016-05-16 17:40:201329검색
권한 있는 메서드 정의
생성자 내부에서 this 키워드를 통해 정의된 메서드는 인스턴스화된 객체 상속을 통해 호출할 수 있습니다.
코드 복사 코드는 다음과 같습니다.

var Student = function(name) {
var _name = name; //개인 속성
//특권 메서드
this.getName = function() {
return _name;
this.setName = function(name) ) {
_name = 이름;
};
var s1 = new Student('zhangsan')
s1.getName(); >

권한 있는 메서드의 역할
권한 있는 메서드는 생성자 외부에서 공개적으로 접근할 수 있으며(인스턴스화된 객체에 한함), private 멤버와 메서드에도 접근할 수 있으므로 객체나 메서드로 사용됩니다. 생성자 인터페이스는 권한 있는 메서드를 통해 개인 속성이나 메서드에 대한 공용 메서드의 액세스를 제어할 수 있는 데 가장 적합합니다. JS 프레임워크의 확장에는 많은 애플리케이션이 있습니다.
권한 있는 메서드와 공개 메서드의 차이점
같은 점: 1. 둘 다 생성자 외부에서 공개적으로 액세스할 수 있습니다. 2. 모두 공용 속성에 액세스할 수 있습니다
차이점: 2가지 점이 있습니다 1. 각 인스턴스에는 권한 있는 메서드의 복사본이 있어야 하며(싱글톤에서 사용되는 경우를 제외하고 메모리를 고려해야 함) 공용 메서드



모든 인스턴스에 대한 코드 복사
코드는 다음과 같습니다. //학생 객체 인스턴스 생성 var s1 = new Student('zhangsan');
var s2 = new Student('lisi');
//두 인스턴스의 권한 있는 메서드에 대한 참조가 다릅니다. 메소드는 객체가 다시 생성될 때 사용됩니다.
console.log(s1.getName === s2.getName); //false


2. , 그러나 공개 메소드는 그럴 수 없습니다.



코드 복사
코드는 다음과 같습니다. //학생용 공개 메소드 생성// 공용 메서드는 개인 속성에 액세스할 수 없습니다.
Student.prototype.myMethod = function() {
console.log(_name); //ReferenceError: _name이 정의되지 않았습니다.
s1; .myMethod() ;



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