gpt4 book ai didi

javascript - 在 Javascript(或 Jquery)中将函数声明为变量

转载 作者:行者123 更新时间:2023-11-30 07:23:07 25 4
gpt4 key购买 nike

$(function(){
//choose one below at once, the results are different
$('#click').click(clickMe.popup);
$('#click').click(clickMe.popup());
});

var clickMe = {
message: 'hello',
popup: function(){
alert(this.message);
}
}

<input type='button' value='click me' id='click' />

结果不同,

  1. 当我选择第一个时,单击按钮时会弹出一个窗口,但它显示“未定义”。

  2. 当我选择第二个时,我会在加载时自动弹出一个窗口,其中有“你好”消息。

问题:

  1. popup() 和 popup 有什么区别?
  2. 弹出窗口中的消息有什么问题?

最佳答案

what's the different between popup() and popup ?

popup() 调用 函数。 popup 只是引用它(例如,因此您可以将其指定为 click 处理程序)。

what's wrong with the message inside the popup ?

当你把它连接成

$('#click').click(clickMe.popup);

...点击将调用该函数,但 this 指的是 DOM 元素,而不是您的 clickMe 对象。您可以使用 Function#bind 来解决这个问题:

$('#click').click(clickMe.popup.bind(clickMe));

Function#bind 返回一个函数,调用时将使用您提供的 this 值调用原始函数。如果您需要支持没有Function#bind 的旧浏览器(例如IE8),jQuery 提供了$.proxy。做同样的事情:

$('#click').click($.proxy(clickMe.popup, clickMe));

...或者您可以填充/填充 Function#bind(搜索将为您提供多个实现)。

关于javascript - 在 Javascript(或 Jquery)中将函数声明为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30439644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com