Joe*_*Fan 2 javascript jquery function-pointers
这段代码工作正常:
if (chk.checked)
div.show(delay);
else
div.hide(delay);
Run Code Online (Sandbox Code Playgroud)
我试图通过像这样重构它来变得聪明:
var showHide = chk.checked ? div.show : div.hide;
showHide(delay);
Run Code Online (Sandbox Code Playgroud)
但这导致jQuery内部出现异常.2段代码不应该相同吗?
你可以这样做:
var showHide = chk.checked ? 'show' : 'hide';
div[showHide](delay);
Run Code Online (Sandbox Code Playgroud)
如果您只是保存对该函数的引用,您将丢失接收器 - 也就是说,在函数内部this引用将是错误的.
我想你可以这样做:
var showHide = chk.checked ? div.show : div.hide;
showHide.call(div, delay);
Run Code Online (Sandbox Code Playgroud)
编辑或,以避免在第一行中引用"div"两次:
var showHide = div[chk.checked ? 'show' : 'hide'];
Run Code Online (Sandbox Code Playgroud)
我不确定这样的重构会让事情变得更清楚:-)
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |