【发布时间】:2013-07-02 17:54:55
【问题描述】:
我想实现类似的东西:
函数someFunction 有一个方法.lockThis(<object>) 并且在第一次调用时:
var foreverThis = {};
someFunction.lockThis(foreverThis);
// ... or
// someFunction = someFunction.lockThis(foreverThis);
它会将此函数绑定到<object>,以便下一次(或任何其他)此函数通过 as-function 或 as-method 调用或通过 apply/call 执行 - 它最初会给出 @987654326 @ 就像这样。
当然,我可以定义Function.prototype.lockThis,它将通过.apply()/call() 调用函数并将给定对象指定为上下文,但是如果有人通过@ 调用它,仍然可以替换someFunction 的上下文987654330@也一样。
有没有办法在 JavaScript 中锁定函数上下文,使其总是提供对象为 this 而无需更改函数本身的代码?
【问题讨论】:
-
所以你实际上是在努力做到这一点,如果你这样做
someFunction.lockThis(something),每隔一次你调用someFunction,无论它在代码中的什么位置,它都会假装它正在做@ 987654334@? -
@SamuelReid,是的,像这样
-
根据您删除的问题:
$(".class3")选择所有具有class3类的元素;$("div.class3")选择所有具有class3类和 的元素都是div元素。更不用说现代浏览器保留了类与元素关系的索引,一个类选择器可以使用getElementsByClassName查询,而另一个需要querySelectorAll或getElementsByClassName+过滤tagName。 Reference
标签: javascript this