【发布时间】:2017-01-28 14:57:48
【问题描述】:
在下面的代码中,我想通过构造函数使泛型函数可用。该对象用于处理对 API 的调用。但是如果我从 events.POST 调用 this._isEmpty(obj) 它总是返回 false。放置 _isEmpty() 函数的主体确实会产生所需的结果。我该如何解决这个问题? 当然,欢迎任何有关改进此结构的提示。 我在 SO 上查找了一些类似的问题,但我发现的问题/答案没有类似的嵌套。
我打了以下电话:
var assystBridge = new global.assystBridge();
response.setStatus(assystBridge.events.POST(request, response));
对象:
var assystBridge = Class.create();
assystBridge.prototype = {
initialize: function() {
// Generic functions go here
function _isEmpty(obj){
// Checks whether an object has properties
// Used for checking whether any data was posted or not
// Returns true or false
return Object.keys(obj).length === 0;
}
},
events: {
POST: function(request, response){
var data = request.body.data;
var responseText = '';
if(this._isEmpty(data)){
//if(Object.keys(data).length === 0){
response.setBody({"response":"NO data was posted", "data": data});
return 400;
} else {
return 201;
}
},
GET: function(request, response){
},
DELETE: function(request, response){
}
},
type: 'assystBridge'
};
【问题讨论】:
-
如何调用events.POST?你实例化 assystBridge 类然后调用 instance.events.POST 吗?我问是为了在你调用它时确定 events.POST 中“this”的含义。
-
更新问题
-
我很惊讶你在调用 response.setStatus(assystBridge.events.POST(request, response)); 时没有收到错误消息。如果不知何故 assystBridge 没有从其他地方继承 _isEmpty 函数,则代码应该正常损坏,因为它的编写方式 _isEmpty 不是类或原型的成员,它只是初始化方法的私有。
-
它在Java后端,使用Rhino实现JS接口。它有一些怪癖,所以你的评估是正确的
标签: javascript function object scope