>  기사  >  웹 프론트엔드  >  자바스크립트의 공개 메소드와 비공개 메소드란 무엇입니까?

자바스크립트의 공개 메소드와 비공개 메소드란 무엇입니까?

青灯夜游
青灯夜游원래의
2022-02-07 14:50:372580검색

JavaScript에서 공개 메소드는 외부에서 액세스하고 호출할 수 있는 메소드를 의미하는 반면, 비공개 메소드는 객체 생성자에서 선언되어 외부 세계에서 보이지 않거나 액세스할 수 없는 메소드를 의미합니다.

자바스크립트의 공개 메소드와 비공개 메소드란 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

One: Public 메서드

Public 메서드는 외부에서 액세스하고 호출할 수 있는 메서드입니다.

// 对象中
var test1 = {
    name:'大白',
    getName:function(){
        console.log(this.name);
    }
}
//调用
test1.getName();//大白

// 构造函数中
function test2(name,age){
    this.name = name;
    this.age = age;
    //公有方法
    this.getName = function(){
        console.log(this.name);
    }
}
// 在原型中
test2.prototype.getAge = function(){
    console.log(this.age);
}
//调用
var test3 = new test2('小白',12);
test3.getName();//小白
test3.getAge();//12

둘: Private 메서드와 Public 메서드

Privileged 메서드는 다음을 의미합니다. 접근 가능 내부 프라이빗 속성과 프라이빗 메서드의 퍼블릭 메서드(프라이빗 메서드는 액세스 가능, 프라이빗 속성 메서드는 권한 있는 메서드라고 하며, 이것도 퍼블릭 메서드의 일종임)

프라이빗 메서드 객체 생성자의 선언 참조 , 외부에 보이지 않는 접근불가(Inaccessible) 방식.

다양한 방법을 사용하여 다양한 형태로 프라이빗 메서드와 권한 있는 메서드를 정의합니다

객체에서객체 객체 표현식을 사용하여 객체를 생성하고 일부 속성과 메서드를 추가한 다음 정적 방식으로 직접 호출합니다. Rest.getName();

즉시 함수 실행객체의 개인 데이터는 익명 함수 즉시 실행 표현식(IIFE)에 배치됩니다. 즉, 이 함수는 호출되는 순간에만 존재하며, Destroyed

var yourObject = (function() {

 // 私有属性和方法
 return {
 // 公有方法和属性
 }
}) ();

이는 이전 Rest의 정의와 동일하며 yourObject를 통해 직접 접근할 수 있습니다. 이러한 종류의 모듈식 액세스는 매우 강력합니다.

var test4 = (function(){
    //私有属性
    var total = 10;
    // 私有方法
    var buy = function(){
        total--;
    }
    var get = function(){
        return total;
    }
    return {
        name:'小白白',
        getTotal:get,//使用了闭包的方式来简介使用内部私有变量
        buyfood:buy
    }
})();
test4.buyfood();
console.log(test4.name);//小白白
console.log(test4.getTotal());//9

클로저를 사용하여 내부 프라이빗 변수를 간접적으로 사용합니다.

생성자에서 프라이빗 속성과 메서드를 정의하는 것이 매우 편리합니다. 클로저를 사용할 필요가 없으며

// 构造函数中

function test5(name) {
 // 私有属性
 var total = 10;

 // 公有属性
 this.name = name;

 // 私有方法
 function _buyFood() {
    total--;
 }

 // 特权方法,才能访问私有的属性和私有的方法
 this.buy = function() {
     _buyFood();
 }

 this.getTotal = function() {
    return total;
 }
}

// 公有方法, 注意这里不能访问私有成员_total
test5.prototype.getName = function() {
    //console.log(_total); // Uncaught ReferenceError: _total is not defined
    return this.name;
}

var test6 = new test5('大小白');
console.log(test6.getName()); // '大小白'
test6.buy();
console.log(test6.getTotal()); // 9

를 호출할 때 데이터를 초기화할 수 있습니다. 조합해서 사용하면생성자 메서드를 사용하면 일부 초기화된 데이터를 전달할 수 있지만, 프라이빗 데이터에 접근해야 하는 퍼블릭 메서드가 많으면 프라이빗 멤버 속성에 접근할 수 없습니다. 마지막으로 각 인스턴스에 불필요한 메소드를 많이 가져옵니다.

var test7 = (function(){
    // 私有属性
    var total = 10;

    // 私有方法
    function buyFood(){
        total--;
    }
    // 构造函数
    function test7(name){
        this.name = name;
        this.getTotal = function(){
            return total;
        }
    }
    // 公有方法  这里不是test7内部的私有
    test7.prototype.buy = function(){
        console.log(total);
        buyFood();
    }
    test7.prototype.getName = function(){
        return this.name;
    }
    return test7;
})();
var test0 = new test7('大大白');
console.log(test0.getName());//大大白
test0.buy();//10
console.log(test0.getTotal());//9

【관련 추천:

javascript 학습 튜토리얼

위 내용은 자바스크립트의 공개 메소드와 비공개 메소드란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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