作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图理解一件事。我被赋予了这个功能:
给定代码
function initfunc() {
var myVar= {
name : "My name."
};
function display_it() {
//console.log(this); //commented out, window
alert(this.name);
}
document.onclick = myFunc(display_it, myVar);
}
initfunc();
function myFunc(display, x)
{
//make it say My name.!
}
现在我正在尝试使用 display_it()
函数来显示“我的名字”。当我在 display_it()
中记录 this
时,它引用了 window 对象。
我的尝试
我得到的唯一“坏主意”是在 myFunc
中放入类似的内容:
function myFunc(display, x)
{
window.name = context.name;
func();
}
但我感觉有更好的方法可以做到这一点。有吗?
最佳答案
您可以通过使用 bind
并提供 myVar
作为上下文来实现。此外,您还需要返回该函数,因为您打算将其用作事件处理程序
function myFunc(display, x) {
return display.bind(x);
}
Function.bind
的第一个参数接受一个对象,该对象将在代码执行时设置为上下文。
The bind() method creates a new function that, when called, has its this keyword set to the provided value, with a given sequence of arguments preceding any provided when the new function is called.
关于javascript - 这个范围,指的是window,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27591208/
我是一名优秀的程序员,十分优秀!