ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptのパブリックメソッドとプライベートメソッドとは何ですか

JavaScriptのパブリックメソッドとプライベートメソッドとは何ですか

青灯夜游
青灯夜游オリジナル
2022-02-07 14:50:372604ブラウズ

JavaScript では、パブリック メソッドは外部からアクセスして呼び出すことができるメソッドを指しますが、プライベート メソッドはオブジェクトのコンストラクターで宣言され、外部からは見えずアクセスできないメソッドを指します。

JavaScriptのパブリックメソッドとプライベートメソッドとは何ですか

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

1: パブリック メソッド

パブリック メソッドは、外部からアクセスして呼び出すことができるメソッドです

// 对象中
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

2: プライベート メソッドとパブリック メソッド

特権メソッドは、内部のプライベート プロパティとプライベート メソッドにアクセスできるパブリック メソッドを指します (プライベート メソッドおよびプライベート属性メソッドにアクセスできるものは特権メソッドと呼ばれ、これもパブリック メソッドの一種です)

プライベート メソッドはオブジェクトのコンストラクターで宣言されており、表示されず、外部からアクセス可能。

プライベート メソッドと特権メソッドをさまざまな形式で定義するには、さまざまな方法を使用します。

オブジェクト内でObject オブジェクト式を使用してオブジェクトを作成し、いくつかのプロパティとメソッドを追加します。静的な方法で直接呼び出します。 Rest.getName() など;

即時実行関数オブジェクトのプライベート データは匿名関数の即時実行式 (IIFE) に配置されます。つまり、この関数は次の場合にのみ存在します。これは呼び出されます。実行されるとすぐに破棄されます。

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

closure を使用して内部プライベート変数を間接的に使用します

コンストラクターでプライベート プロパティとメソッドを定義すると便利ですが、私たちはそうではありませんクロージャを使用する必要がある場合は、

// 构造函数中

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 学習チュートリアル

以上がJavaScriptのパブリックメソッドとプライベートメソッドとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。