如何调用变量A对应函数内部的m函数并输出「Hello World」?
访问闭包内
m函数并输出「Hello World」的方法 首先明确:变量m是定义在立即执行函数(IIFE)内部的私有变量,外部无法直接访问,但它已经被挂载到Person的原型上作为getGreeting方法,因此可以通过以下方式调用并得到目标输出:
方法1:通过Person实例调用
先创建Person实例(传入name为"World"),再调用原型上的getGreeting方法(本质就是内部的m函数):
const person = new A("World"); // 控制台会输出"World" const result = person.getGreeting(); console.log(result); // 输出「Hello World」
实例调用时this指向该实例,this.name即为传入的"World",符合输出要求。
方法2:直接通过原型调用并绑定this
如果不想创建实例,可直接访问A.prototype.getGreeting,通过call或apply绑定指定的this对象:
const result = A.prototype.getGreeting.call({ name: "World" }); console.log(result); // 输出「Hello World」
这种方式无需创建实例,直接利用原型上的关联方法(即m函数),通过绑定this指定name值。
补充说明
闭包内的m函数属于私有变量,外部无法通过A.m这类直接方式访问,只能通过IIFE暴露的接口(此处为Person原型上的getGreeting)调用它。
内容的提问来源于stack exchange,提问作者hulk21
相关产品推荐
相关产品推荐

