1

我在一篇文章中阅读了JavaScript 私有方法,我们可以在 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 方法中调用价格成员时,它不起作用:

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

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

4

2 回答 2

0

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

this.toto = function() {

   private_stuff.call(this);
   // do sthg 

}

这会在您的对象的上下文中调用该函数。

于 2013-10-19T12:13:34.697 回答
-1

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

于 2013-10-19T12:37:21.397 回答