【发布时间】:2012-01-27 19:46:02
【问题描述】:
我在玩 JavaScript,并注意到 this 永远不可能是原始的。我在说什么?让我解释一下。
以这个函数为例。
function test(){
return typeof this;
}
test.call('Abc'); // 'object'
test.call(123); // 'object'
他们都是'object',而不是'string' 或'number',就像我预期的那样。
经过一番困惑(并与instanceof 混淆)后,我弄清楚了发生了什么。 'Abc' 被转换为String 对象,123 被转换为Number 对象。
无论如何,我的问题是为什么会发生这种情况,以及如何将对象转换回其原始对象?
我知道我可以使用(String)this 或(Number)this,但如果我不知道类型怎么办?
编辑:我试图这样做:
function element(){
var $e = $(this),
$d = $e.closest('div');
}
element.call('#myID');
它没有工作。 this 是一个String 对象,jQuery 只是制作了一个对象集合,而不是使用选择器来搜索 DOM。
【问题讨论】:
-
它可能在规范中某处es5.github.com
-
哇,这不是我所期望的。
-
顺便说一句,您的
element函数完全不需要使用this。这太棘手了,为自己好。function element(selector)显然会避免这整件事。 -
@AlexWayne:我可能应该那样做:-P
标签: javascript jquery object primitive