Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么可以';";这";要换吗?_Javascript - Fatal编程技术网

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值可以设置为不同的值(请参阅)。