Javascript 为什么可以';";这";要换吗?
我知道您可以使用Javascript 为什么可以';";这";要换吗?,javascript,Javascript,我知道您可以使用apply等更改此的上下文 但是为什么你不能这样做呢 this=5;//分配中的左侧无效 与此没有太大区别: function Foo() { console.log(this.valueOf()); } Foo.apply(5); 使用apply和this=5有什么区别?不只是局部地重新定义这个对于被调用的函数是什么?您不能重新定义保留关键字这是其中之一 这是一个保留字,不是正常变量。这是一个对象。您可以将数值指定给此对象的属性,但不能将数值指定给此对象本身。这
apply
等更改此
的上下文
但是为什么你不能这样做呢
this=5;//分配中的左侧无效
与此没有太大区别:
function Foo() {
console.log(this.valueOf());
}
Foo.apply(5);
使用
apply
和this=5
有什么区别?不只是局部地重新定义这个对于被调用的函数是什么?您不能重新定义保留关键字这是其中之一
这是一个保留字,不是正常变量。这是一个对象。您可以将数值指定给此对象的属性,但不能将数值指定给此对象本身。这是您所处的上下文。你不能改变它,因为要改变上下文,你只需要处于不同的上下文中
同样的道理,你不能用vb来改变我,也不能用c来改变我
“this”不是可赋值变量。它是只读的
也许有一个真正的代码,你需要改变这个,我可以建议你一些别的
您可以这样做:
var myFunction = function(arg1) {
//Do something here ...
};
如果需要更改,只需重新评估变量:`
myFunction = function(arg1) {
//Do something else here ...
};
但是如何使用apply
而不仅仅是本地重新定义调用的函数的this
?apply
提供了一个新的上下文,即this
,它不会重新定义它。@anonymous函数在被调用之前没有this
。因此,用apply
等指定this
不是重新定义它,而是指定它,也不是“本地”执行它,这意味着在函数中,它是在调用点执行它。首先,您不需要——只需定义另一个变量,将它初始化为this
,然后把它改成你心满意足的样子。第二,这将使我们几乎不可能知道一个程序在做什么。谷歌搜索“ChangethisJavaScript”。一个对象的子对象是什么?比如这个。hello。hello是此对象的子对象。这是一个属性,而不是子对象。此上下文中的子对象指的是对象的一部分。假设我们有一个对象foo。在对象foo中,没有任何内容。现在我们添加一个子栏。Foo现在里面有一个变量栏,可以从“Foo.bar”引用。对不起,用词不对。。。你说得对。。。我不知道还能用什么词,“这就是你所处的环境”绝对不是。具有此参数,可设置为在非严格模式下引用任何对象,或在严格模式下引用任何值。您根本无法引用执行上下文,每次调用时,它的this值可以设置为不同的值(请参阅)。