为什么我的方法看不到这个属性
Why is my method not seeing this.property?
在下面的代码中,initializeBoard
有权访问该属性,并且在我启动脚本时控制台返回"white"。但是当我在窗口内单击时,我得到"未定义"。我错过了什么明显的东西?(奖励:是什么搜索查询会引导我无需询问即可找到答案?
var view = {
currentMove: 'white',
initializeBoard: function() {
console.log(this.currentMove);
},
click: function(e) {
console.log(this.currentMove);
}
}
window.onload = function() {
view.initializeBoard();
document.onclick = view.click;
}
this
的值由函数的调用方式决定,而不是由首次分配函数的位置决定。
您正在将(引用)函数复制到document.onclick
。
当单击事件发生时document.onclick
被调用。 不调用view.click
(即使它具有与 document.onclick
相同的值)。这意味着this
document
不view
。
创建在正确的上下文中调用原始函数的包装函数,请使用 bind
。
document.onclick = view.click.bind(view);
相关文章:
- 为什么我在Internet Explorer上看不到html元素
- ajax请求成功,但可以'我看不到我的数据
- 使用jQuery for RSS看不到多个帖子
- 执行此代码时,我看不到警告框
- Javascript 方法看不到对象变量
- 看不到变量
- Phantomjs 看不到 Twitter/Facebook 授权页面
- AS3 XML上的翻页在IE和FIREFOX上看不到
- JavaScript 看不到声明的变量
- 看不到函数外的Javascript变量
- Javascript对象看不到内部函数
- 为什么我的firefox扩展javascript不能访问opener窗口,也看不到window.name
- 从Node.js查询Neo4j时看不到任何回调
- I'我在css中做了一些隐藏的东西,我可以'I don’我现在点击按钮时看不到它
- 我看不到Javascript数组中的图像
- 硒 IDE 1.8.1 警报框:运行测试时看不到警报框
- 在网格PhongMaterial地面和聚光灯上看不到任何带有Colada模型的阴影
- 为什么我的方法看不到这个属性
- EXT JS 在水平放置组件时看不到 fieldLabel 属性
- 为什么当我在这个JavaScript对象上使用反射时,我可以'看不到在其原型对象中定义的属性