2013-02-19 73 views
0

我真的很喜欢在this articale中描述的JavaScript类继承。 例如:如何在继承的javascript类中声明私有函数

var Person = Class.extend({ 

    init: function(isDancing){ 
    this.dancing = isDancing; 
    }, 
    dance: function(){ 
    return this.dancing; 
    } 

}); 

在这种情况下,舞蹈是公共职能。我想声明私有函数“散步”。但是如何以及在哪里? 我确信这对大多数人来说都很简单。

谢谢。

+1

“私人”性质和原型继承不很好地协同工作。 JS没有私有属性(尚未)的概念,所以不要尝试使用这种语言,它并不意味着被使用。 – 2013-02-19 17:17:36

+0

John Resig的'Class'实现与jQuery完全无关! – Bergi 2013-02-19 17:34:34

+0

为什么要“散步”变得私密?私人到什么?你能告诉我们你需要的是什么,以及你想要给它打电话吗? – Bergi 2013-02-19 17:37:02

回答

0

这是你可以做私人的功能,但你失去了能力的原型:

var Person = Class.extend((function() { 
    var dancing; 

    // private functions 
    function dance() { 
     return dancing; 
    } 

    // public functions 
    return { 
     init: function(isDancing) { 
      dancing = isDancing; 
     } 
    } 
}())); // <-- immediate invocation 
+2

我没有仔细看看'Class'代码,但我认为所有的实例现在都会共享相同的'dancing'变量。 – 2013-02-19 17:20:29

+0

太棒了!我想我做了一个静态私有变量:D – Halcyon 2013-02-19 17:21:35

+0

@Yoshi我可以,但我不想。额外的括号在那里向读者指出,我正在做20行直接调用。额外的括号是100%故意的。 – Halcyon 2013-02-19 17:23:47