Javascript 是否有方法将对象传递给casper.js';求值()?

Javascript 是否有方法将对象传递给casper.js';求值()?,javascript,node.js,web-scraping,phantomjs,casperjs,Javascript,Node.js,Web Scraping,Phantomjs,Casperjs,我看到了这个线程,看起来无法将复杂对象传递给evaluate() 因此,如果我编写一个对象并希望在不同的evaluate()之间共享,我该如何做 比如说像这样一个愚蠢的对象,我想一次又一次地使用getData函数: var testObj = (function() { var a = 1; function test1(b) { return (a+b); } return { getData : function(arg) { return

我看到了这个线程,看起来无法将复杂对象传递给
evaluate()

因此,如果我编写一个对象并希望在不同的
evaluate()
之间共享,我该如何做

比如说像这样一个愚蠢的对象,我想一次又一次地使用getData函数:

var testObj = (function() {
  var a = 1;

  function test1(b) {
    return (a+b);
  }

  return {
    getData : function(arg) {
      return (test1(3) + arg);
    }
  }
})();
有可能的解决办法吗

更新1:

我的意思是用函数传递对象。如下所示,但它不起作用(返回
null
):


不幸的是,您不能将复杂结构传递给evaluate(),因为传递给evaluate()的任何arg都是某种JSON.parse(JSON.stringify(arg))

但这并不意味着你不能通过另一种物体

关于如何传递JSON对象进行求值的示例。

var casper=require('casper').create();
casper.start('about:blank',function(){
var JSONObject={arg1:'val1',arg2:'val2'};
this.echo(casper.evaluate)(函数(myObject){
返回JSON.stringify(myObject);
},JSONObject));
});
casper.run(函数(){
这是exit();
}); 
有关如何传递基本对象进行求值的示例。

var casper=require('casper').create();
casper.start('about:blank',function(){
obj=新对象();
obj.param1=“value1”;
obj.param2=“value2”;
this.echo(casper.evaluate)(函数(myObject){
返回JSON.stringify(myObject);
},obj));
});
casper.run(函数(){
这是exit();
});
关于如何传递带有要计算的参数的函数的示例。

var casper=require('casper').create();
casper.start('about:blank',function(){
var arg1=“value1”;
var arg2=“value2”;
echo(casper.evaluate(myFunction,arg1,arg2));
});
casper.run(函数(){
这是exit();
});
函数myFunction(arg1、arg2){
返回arg1+“-”+arg2;
}

您可以使用clientScripts选项传递脚本,如jQuery-。您可能也可以对自定义脚本执行相同的操作,并对代码进行良好的分离

var casper = require('casper').create({
    clientScripts: ["includes/jquery.min.js", "lib/my-custom-script.js"]
});
casper.start(function () {
    this.evaluate(function () {
        window.customFunction();
    });
});
lib/my-custom-scripts.js:

window.customFunction = function () { /* do stuff */ };
希望这有帮助

window.customFunction = function () { /* do stuff */ };