怎么在一个函数里修改另外一个函数里的函数?

假设我现在有一段代码


function globalActions(){

  App = function(obj) {

    console.log('This is a global App, app id is ' + obj.id);

  }

  Page = function(obj) {

    console.log('This is a global Page, page id is ' + obj.id);

  }

  App({id: 'app'});

  Page({id: 'page'});

  myGlobalActions();

}

function pluginActions(){

  let originalMyPluginActions = myPluginActions;

  myPluginActions = function(){

    App = undefined

    Page = function(obj) {

      console.log('This is a plugin Page, page id is ' + obj.id);

    }

    originalMyPluginActions.apply(this, arguments);

  }

}

function myGlobalActions(){

  myPluginActions(App, Page);

}

function myPluginActions(){

  let originalApp = arguments[0];

  let originalPage = arguments[1];

  arguments[0] = function() {

    console.log('hello I try to modify the global App fn');

    return originalApp.apply(this, arguments);

  };

  arguments[1] = function() {

    console.log('hello I try to modify the global Page fn');

    return originalPage.apply(this, arguments);

  };

}

pluginActions();

globalActions();

在myGlobalActions里定义App或Page(App = / Page =)是禁止的,能够修改的只有myGlobalActions和myPluginActions,请问怎么才能修改globalActions里的App和Page?


墨色风雨
浏览 349回答 2
2回答

一只斗牛犬

如果是你提供的条件,那么是修改不了的,用术语说,这是 globalActions 函数的私有属性,外部是修改不了的。

ABOUTYOU

动态更改一个块级作用域内部的变量,只能用闭包实现
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript