You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从原型函数中动态调用JavaScript私有函数?

问题原因

你的_myPrivateFunction是定义在IIFE(立即执行函数表达式)的局部作用域里的,并没有挂载到全局的window对象上,所以用window[functionName]肯定找不到这个函数,自然会报错。

正确实现方法

把私有函数统一放到一个对象中管理,这样就能通过对象的属性名来动态调用:

const MyObject = (function() { 
    // 把私有函数存到一个对象里
    const privateFunctions = {
        _myPrivateFunction: function() {
            console.log('_myPrivateFunction()');
        }
    };

    const _MyObject = function() {
        console.log('_MyObject');
    };

    _MyObject.prototype = { 
        myPublicFunction: function() {
            privateFunctions._myPrivateFunction(); // 直接调用没问题

            let functionName = '_myPrivateFunction';
            privateFunctions[functionName](); // 动态调用成功
        }
    };

    return {
        init: _MyObject
    }   

})();

let obj = new MyObject.init();
obj.myPublicFunction();

如果你的私有函数不需要访问IIFE内部的其他私有变量,也可以把它挂载到构造函数的原型上(但这样就不算严格意义的私有了),不过更推荐上面的方式,既保持私有性又能实现动态调用。

内容的提问来源于stack exchange,提问作者Duddy67

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 23:01:10