控制台日志记录“;这个“;返回“;空”;
Console logging "this" returns "null"
我正试图为我正在构建的React应用程序创建一个流量存储。我正在使用一个对象分配polyfill-npm包和Facebook的Flux库。
最初,我在引用var currIds = this._data.map(function(m){return m.id;});
的控制台中收到错误"无法读取null的属性'_data'"。该方法是目前唯一直接调用的方法。然后我执行了返回"null"的console.log(this)
。
我觉得这很奇怪。发生了什么事?
我的代码:
var Assign = require('object-assign');
var EventEmitterProto = require('events').EventEmitter.prototype;
var CHANGE_EVENT = 'CHANGE';
var StoreMethods = {
init: function() {},
set: function (arr) {
console.log(this);
var currIds = this._data.map(function(m){return m.id;});
arr.filter(function (item){
return currIds.indexOf(item.id) === -1;
}).forEach(this.add.bind(this));
},
add: function(item){
console.log(this);
this._data.push(item);
},
all: function() {
return this._data;
},
get: function(id){
return this._data.filter(function(item){
return item.cid === id;
})[0];
},
addChangeListener: function(fn) {
this.on(CHANGE_EVENT, fn);
},
removeChangeListener: function(fn) {
this.removeListener(CHANGE_EVENT, fn);
},
emitChange: function() {
this.emit(CHANGE_EVENT);
},
bind: function(actionType, actionFn) {
if(this.actions[actionType]){
this.actions[actionType].push(actionFn);
} else {
this.actions[actionType] = [actionFn];
}
}
};
exports.extend = function(methods) {
var store = {
_data: [],
actions: {}
};
Assign(store, EventEmitterProto, StoreMethods, methods);
store.init();
require('../dispatcher').register(function(action){
if(store.actions[action.actionType]){
store.actions[action.actionType].forEach(function(fn){
fn.call(null, action.data);
})
}
});
return store;
};
在调用set的情况下,我不能使用see
,但是如果函数是通过call
(请参阅此处)或apply
调用的,则您的this
可以是null
,并且您的第一个参数是null
。这也发生在您的require.register
回调中:
fn.call(null, action.data) //First parameter is your 'this'.
相关文章:
- 控制台返回var不是't定义,但它是
- Meteor js-控制台显示'未定义'即使返回结果
- 函数将信息返回到控制台日志,但实际上并没有执行应有的操作
- 将Function-Nothing日志记录返回到控制台
- 控制台返回[Object-Object]而不是对象成员
- 为什么此 IF 语句不返回控制台消息
- 为什么返回的 Promise 在登录到控制台时没有方法
- 在 Javascript 函数中,控制台.log和返回有什么区别
- Javascript在IE7,8,9中返回控制台错误,但在所有其他浏览器中都能完美运行
- 从控制台获取值.log并在输入字段中显示/打印/返回
- 控制台.log返回一个额外的未定义
- javascript 的 document.getElementById 返回 null,但从控制台工作
- 我无法让它作为 JavaScript 函数工作(我在控制台时得到我想要的返回值.log但我不能将其作为函数调用)
- 为什么当我将变量记录到控制台时,我得到了输出,但是当我返回它时,我收到“未定义”
- 控制台日志记录“;这个“;返回“;空”;
- OOOjavascript:object self-reference返回undefined,但控制台显示它存在
- javascript输出返回控制台
- 查询返回控制台日志中的项目,但是html显示Uncaught TypeError: Cannot call method
- 使用文本输入框复制代码以搜索解析将返回控制台错误
- nodejs猫鼬没有't保存条目后返回控制台