Javascript 查看定义函数的位置

Javascript 查看定义函数的位置,javascript,node.js,amazon-web-services,amazon-s3,proxyquire,Javascript,Node.js,Amazon Web Services,Amazon S3,Proxyquire,如何查看此功能的位置: 已定义? 我尝试的是: var AWS = require('aws-sdk'); AWS.S3.prototype.copyObject => undefined 但这是未定义的 我想知道它,因为我想用proxyquire来存根这个函数: var aws_stub = {}; var Mover = proxyquire('../../callback/mover', {'aws-sdk': aws_stu

如何查看此功能的位置:

已定义?

我尝试的是:

var AWS = require('aws-sdk');
AWS.S3.prototype.copyObject
=> undefined
但这是未定义的

我想知道它,因为我想用
proxyquire
来存根这个函数:

 var aws_stub = {};
 var Mover =  proxyquire('../../callback/mover',
                         {'aws-sdk': aws_stub}
                         ).Mover;

 var fake_aws_copyObject = function(params, func){func(null, "succeed")};
     fake_aws_copyObject_stub = sinon.spy(fake_aws_copyObject);
     aws_stub.AWS.S3 ... ??   = fake_aws_copyObject_stub; 

它特定于您选择使用的API版本,因此您必须首先创建服务的新实例
var s3=new AWS.s3()

您可以在描述API的文件中的某个位置找到生成服务所基于的服务定义:
aws sdk/API/s3-2006-03-01.min.json

API
中的API文件加载在
lib/API_loader.js

您可以在
lib/service.js
中看到,它们实际上已添加到原型中,但只有在您创建了服务的新实例后才会发生这种情况:

/**
 * Adds one method for each operation described in the api configuration
 *
 * @api private
 */
 defineMethods: function defineMethods(svc) {
     AWS.util.each(svc.prototype.api.operations, function iterator(method) {
         if (svc.prototype[method]) return;
         svc.prototype[method] = function (params, callback) {
             return this.makeRequest(method, params, callback);
         };
     });
 }
/**
 * Adds one method for each operation described in the api configuration
 *
 * @api private
 */
 defineMethods: function defineMethods(svc) {
     AWS.util.each(svc.prototype.api.operations, function iterator(method) {
         if (svc.prototype[method]) return;
         svc.prototype[method] = function (params, callback) {
             return this.makeRequest(method, params, callback);
         };
     });
 }