小编典典

JavaScript 私有方法

all

要使用公共方法创建 JavaScript 类,我会执行以下操作:

function Restaurant() {}

Restaurant.prototype.buy_food = function(){
   // something here
}

Restaurant.prototype.use_restroom = function(){
   // something here
}

这样我班的用户可以:

var restaurant = new Restaurant();
restaurant.buy_food();
restaurant.use_restroom();

如何创建一个可以由buy_foodanduse_restroom方法调用但不能由类的用户在外部调用的私有方法?

换句话说,我希望我的方法实现能够做到:

Restaurant.prototype.use_restroom = function() {
   this.private_stuff();
}

但这不应该工作:

var r = new Restaurant();
r.private_stuff();

我如何定义private_stuff为私有方法,以便这两个都成立?

我已经阅读了Doug Crockford
文章几次,但似乎“私有”方法不能被公共方法调用,“特权”方法可以在外部调用。


阅读 109

收藏
2022-03-11

共1个答案

小编典典

你可以这样做,但缺点是它不能成为原型的一部分:

function Restaurant() {
    var myPrivateVar;

    var private_stuff = function() {  // Only visible inside Restaurant()
        myPrivateVar = "I can set this here!";
    }

    this.use_restroom = function() {  // use_restroom is visible to all
        private_stuff();
    }

    this.buy_food = function() {   // buy_food is visible to all
        private_stuff();
    }
}
2022-03-11