使用nodejs javascript或c ++ addon覆盖native nodejs函数

时间:2015-12-14 06:54:30

标签: c++ node.js node.js-addon

我试图覆盖nodejs的本机函数并使其成为全局函数。 (例如:console / require)

以下是我的方法:

M1 使用全局

myConsole.js

function myConsole() {
  var nativeConsole = console;

  // ... some code


}

myConsole.log = function() {
  nativeConsole.log('It works!');
}

global.console = myConsole; // <-- HERE

index.js

require('./myConsole.js');
require('./test.js');

test.js

console.log('Not working. :(');

这失败了。

M2 直接分配

myConsole.js

function myConsole() {
  var nativeConsole = console;

  // ... some code


}

myConsole.log = function() {
  nativeConsole.log('It works!');
}

*console = myConsole; // <-- HERE

index.js

require('./myConsole.js');
require('./test.js');

test.js

console.log('Not working. :(');

这也失败了。

有谁知道如何覆盖它?感谢。

添加:我没有c ++节点模块的经验,是否可以覆盖原生代码?

v8 reference

1 个答案:

答案 0 :(得分:0)

在您的示例中,nativeConsole函数无法访问global.console = myConsole;变量。这需要改变。我也没有看到全局作业nativeConsole

中有任何错误

您可以尝试此操作(可让您访问自定义函数中的function myConsole() { var nativeConsole = console; // ... some code return { log : function() { nativeConsole.log('something'); } } } global.console = myConsole; 变量):

     HttpEntity entity = response.getEntity();
                String resJson = EntityUtils.toString(entity);
                System.out.println("**** = " + resJson);
                jsonStr = resJson;
                JSONTokener jsonParser = new JSONTokener(resJson);
                JSONObject itemList = (JSONObject) jsonParser.nextValue();
                int total = itemList.getInt("total");
                int currentPage = itemList.getInt("currentPage");
                JSONArray jsonObjs = itemList.getJSONArray("rows");
                String demoUrl = "";
                String s = "";
                List<String> imageUrlList = new ArrayList<String>();
                for (int i = 0; i < jsonObjs.length(); i++) {
                    JSONObject jsonObj = jsonObjs.getJSONObject(i);
                    // String id = jsonObj.getInt("id");
                    String image_name = jsonObj.getString("image_name");
                    String image_url = jsonObj.getString("image_url");
                    String image_url1 = jsonObj.getString("image_url1");
                    String image_url2 = jsonObj.getString("image_url2");
                    String image_url3 = jsonObj.getString("image_url3");
                    String image_url4 = jsonObj.getString("image_url4");
                    String image_url5 = jsonObj.getString("image_url5");
                    String image_url6 = jsonObj.getString("image_url6");
                    String price = jsonObj.getString("price");
                    imageUrlList.add(image_url);
                    imageUrlList.add(image_url1);
                    imageUrlList.add(image_url2);
                    imageUrlList.add(image_url3);
                    imageUrlList.add(image_url4);
                    imageUrlList.add(image_url5);
                    imageUrlList.add(image_url6);