我发现自己想要重新定义"这个"一整天都很多次。有人可以告诉我如何实现这一点或为什么我不能?
例如:
this = $('div')[0];
为什么我想这样做:与这个'通过函数调用传递引用更自然。 '这'应该引用函数内部的调用对象,例如:
var my_div = $('#some_div');
my_div.click(function(){
console.log(this);
});
发送到日志的内容是对窗口的引用,而不是调用该函数的div。
我写的每个onchange事件处理程序都被迫采取这个'作为参数,以维护对调用对象的引用。这对我来说似乎已经破裂了
答案 0 :(得分:3)
您可以使用.call(context[, params])
和.apply(context[, arguments])
执行此操作。例如:
function move(x, y) {
this.style.left = x + "px";
this.style.top = y + "px";
};
// now this in move refers to the div element
move.call($('div')[0], 100, 200);
但你不能只覆盖this
。
答案 1 :(得分:1)
根据您的目的,您可以使用javascript的bind
。它修改了函数调用上this
关键字的上下文。您可以查看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind以获取更多信息,但这是一个简单的示例。
var obj1 = {
x: 5,
getX: function() {
return this.x;
}
};
var obj2 = {
x: 7
}
var xVal = obj1.getX(); //this = obj1
var boundedFunc = obj1.getX.bind(obj2); //this = obj2
var boundedXVal = boundedFunc();
console.log(xVal); //prints 5
console.log(boundedXVal); //prints 7
答案 2 :(得分:0)
这主要是我的猜测,因为我不知道你的问题的确切答案,但我相信这是因为每当你使用"这个"你在一个物体里面。您无法更改已经存在的对象,因为这会产生一些不需要的结果。内部的个人事物"这个"很好的想法
this.someVariable = "something else"