要使用公共方法创建 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方法调用但不能由类的用户在外部调用的私有方法?
buy_food
use_restroom
换句话说,我希望我的方法实现能够做到:
Restaurant.prototype.use_restroom = function() { this.private_stuff(); }
但这不应该工作:
var r = new Restaurant(); r.private_stuff();
我如何定义private_stuff为私有方法,以便这两个都成立?
private_stuff
我已经阅读了Doug Crockford 的文章几次,但似乎“私有”方法不能被公共方法调用,“特权”方法可以在外部调用。
你可以这样做,但缺点是它不能成为原型的一部分:
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(); } }