什么相当于将“this”传递给函数?

时间:2017-01-23 11:25:54

标签: javascript

我有一个函数,期望“this”作为参数传递,但我想传递一个不同的对象而不移动触发器函数,所以目前我有这个:

onclick="showCalendarControl(this);"

但我想这样做:

onclick="showCalendarControl(document.getElementById('somethingelse'));"

这不起作用,我想做一些不可能的事情吗?

1 个答案:

答案 0 :(得分:0)

尝试使用.bind()功能。 Docs

bind的第一个参数将设置函数'this参数(替换默认参数),所有其他参数在调用方法后转换为参数。

示例:

onclick="showCalendarControl.bind(this)"  //the this-statement inside of showCalendarControl will be the specified one

onclick="showCalendarControl.bind(something, this);" //this will be passed as first argument to showCalendarControl

编辑:测试后,似乎.bind()在onclick处理程序中不起作用。但是你最初的想法是有效的,或者至少我理解为你的问题(将document.getElementById结果传递给你的方法)

function showCalendarControl(obj) {
  obj.innerHTML = "YEY";
}
<body>
  <div id="something" onclick="showCalendarControl(document.getElementById('somethingelse'));">Click Me</div>
  <div id="somethingelse"></div>
</body>

如果要将参数绑定到函数的this语句,可以尝试此操作(使用call()函数而不是初始绑定):

function showCalendarControl() {
  this.innerHTML = "YEY";
}
<body>
  <div id="something" onclick="showCalendarControl.call(document.getElementById('somethingelse'));">Click Me</div>
  <div id="somethingelse"></div>
</body>