如何在javascript中使用私有方法中的公共属性?

时间:2013-10-19 10:12:42

标签: javascript methods private

我在帖子JavaScript private methods中看到我们可以在javascript中“模拟”私有方法。

function Restaurant(price)
{
    var myPrivateVar;

    this.price = price;

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

   this.toto = function() {

       private_stuff();
       // do sthg 
   }
}

当我尝试在private_stuff方法中调用price成员时,它不起作用:

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

那么如何在javascript中使用私有方法中的公共属性?

2 个答案:

答案 0 :(得分:0)

问题是:在private_stuff函数内部,它引用自身,而不是由Restaurant构造函数构造的对象。将方法绑定到对象有几种方法,一种简单的方法是:

this.toto = function() {

   private_stuff.call(this);
   // do sthg 

}

在对象的上下文中调用函数。

答案 1 :(得分:-1)

我找到了解决方案:删除“这个。”