gpt4 book ai didi

javascript - 功能问题(javascript)

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

我已经构建了一个包含大量 javascript 的工作页面。 javascript 位于 <head></head> 之间标签没有问题,但我真的想将它移动到外部文件。

虽然我可以简单地剪切和粘贴所有减去 <script></script> 的代码标签但包含 $(document).ready(function() { });它变成一个 .js 文件并以通常的方式引用它,但这让我很头疼。谁能建议我为什么不能这样做?

作为妥协,我虽然至少会分离一些函数并将它们放在外部文件中,但那里也存在问题。

function look(){
var word_id = $(this).attr("id");
// Other stuff
var value = $(this).val();
// Other stuff
}

$("input").focus(function(){look();});

在上面的函数中,this 不是以前的this,代码如下所示:

$("input").focus(function(){
var word_id = $(this).attr("id");
// Other stuff
var value = $(this).val();
// Other stuff
});

我希望真正聪明的人能轻易发现我的错误。非常感谢,帕特里克。

最佳答案

当你在没有指定上下文的情况下调用函数时,如调用 look() 时,该函数内的 this 关键字将成为全局对象。

在您的情况下,您只能传递对函数的引用,它会正常工作:

$("input").focus(look);

此外,知道 this 关键字不是完全隐式的可能会有所帮助,可以使用 call 显式设置和 apply功能:

function test(arg1){
alert(this + arg1);
}

test.call('hello ', 'world'); // will alert 'hello world'

并且上下文(this 关键字)在以下情况下被隐式设置:

1- 调用作为对象成员的函数时,例如:

obj.myFunc(); // 'this' will refer to obj

2- 使用 new 运算符调用函数时:

var test = new Func(); // 'this' will refer to a new object

3- 调用不与任何对象关联的函数时:

foo();
// or
(function () {})(); // 'this' will be the global object

关于javascript - 功能问题(javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1937475/

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