javascript - 为什么将一个函数(属于一个对象)分配给一个变量会有这样的行为?

标签 javascript object binding this

我有这个网页,我必须使用很多 document.getElementById的。由于我很懒,我想到通过分配 document.getElementById 来节省一些字节。到更短的变量:

var geid = document.getElementById;

但是,这并没有达到我的预期。它给了我以下错误:

Uncaught TypeError: Illegal invocation

考虑以下代码片段,它演示了我的问题:

var foo = document.getElementById('foo');
console.log(foo); // outputs: '<div id="foo">Foo</div>'

var geid = document.getElementById;
var foo_geid = geid('foo'); // Aaaaaargh! Uncaught TypeError: Illegal invocation
console.log(foo_geid);
<div id="foo">Foo</div>

那我做错了什么?为什么我不能做我所做的事情?

我检查了“How does the "this" keyword work? ”,因为我有预感 this必须对这一切做点什么。 (在我看来,getElementById 以某种方式document 对象分离)。但我无法真正查明和阐明问题。谁能帮我吗?

最佳答案

您需要使用一个函数:

var d = function(id) 
{
    return document.getElementById(id);
}

然后你就可以像这样使用它:

var el = d('someId');

关于javascript - 为什么将一个函数(属于一个对象)分配给一个变量会有这样的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46278258/

相关文章:

javascript - 用对象动态填充 div

javaFX 文本字段和监听器

JavaFX 绑定(bind)和属性更改

javascript - 继续检查条件而不是一次性检查 jquery/js

javascript - 为什么窗口有自引用窗口属性

javascript - Jquery 中的触摸事件似乎缺乏有用的信息

Javascript 括号格式

objective-c - 绑定(bind)到 NSArrayController 的arrangedObjects 显示一个左括号

javascript - javascript 中匹配的浮点值和字符串值不匹配

java - 使用 WebView.Load() 读取带有 JS 库引用的动态 HTML?