Javascript中的“私有”属性继承

时间:2013-09-01 01:40:44

标签: javascript jquery inheritance closures private-members

我想用模块化模式构建我的javascript应用程序,如下:

APP = (function() {
    // Private stuff
    var _privateVariable = 'private',
        _priv = 'priv'

    _privateMethod = function(){ /* */ };

    // Exposed API
    return {
        publicVariable : 'public',
        publicMethod   : function(){ 
             return _privateVariable
        };
    }());

然后我希望能够通过类似插件的模块扩展应用程序;例如,使用jQuery:

$.extend(true, APP, (function() {
    // Child private stuff
    var _privateVariable = 'childPrivate',

    // Exposed API
    return {

    }()))

我想要达到的目标之一是:

  1. 在延长后调用APP.publicMethod()时,我想返回'childPrivate'而不是'private';
  2. 能够从扩展的公开的API 访问_priv
  3. 总之,我希望父模块中定义的私有变量将作为子级的私有成员在子模块中继承。

1 个答案:

答案 0 :(得分:0)

使用这种结构你不能这样做。 看看John Resig关于如何在javascript中实现继承的精彩帖子: http://ejohn.org/blog/simple-javascript-inheritance/