Javascript中的这个用法的详细解释

前几天面试的时候用过这个,面试官说我懂点偏差,回来看看书和博客,做了一点测试,发现了自己的错误认识。

1。全局变量

它应该是最常用的,这个函数称为A,这实际上是一个全局变量。


var值= 0;函数梅(){
var值 1 ;
console.log(这个值); / / 0 console.log(价值); / / 1 }
(梅);




输出0是因为这指向全局。

2。构造函数

这是我熟悉的用法。构造函数使用这个、新的、一个新的对象,并指向新对象。


var值;函数梅(){
这个值= 1;
这个=函数(){
console.log(的价值)
}
新的梅();
console.log(m.value); / / 1 m.show(); / / 1


您可以看到输出是1而不是窗口,并且因为构造函数,这里这里指向的是新对象而不是全局变量。

3.call和应用

使用我的调用示例并直接应用blog


var456;
函数f1(){
这个123;
}
函数F2(){
(这console.log。P);
}
F2(); / / 456 f2.call(F1()); / / 123 f2.apply(F1()); / / 123




第一行输出456是非常清楚的。这指向整个世界,后123是因为调用或应用。F2的这一点指向F1,而F1中的p是123,具体解释了该博客的直接发布。

4。函数被称为对象的方法(我错了)。

那时,我有几种方法来写一个对象。我在脑海中定义了一个全局变量,然后以对象的方式调用它。面试官问我这是什么,我说应该是窗口,因为这样我用的更少,认为只有新的或者调用会改变这个方向。他说不,让我回去亲自看看吧。现在我已经试过了。我真的错了。


var值父亲函数(梅){ };
梅。值=子;
梅。得到=函数(){ console.log(这个值)};
梅。秀=函数(){ console.log(值)};
Mei.get(); / /孩子mei.show(); / /父亲




因为被称为梅方法,这这里指的mei.value所以输出的孩子

至于父亲,我明白了这个函数,显示点是在全局环境中定义的,范围链,在显示中没有发现值,然后定义自己的环境,为此,可以找到全局值,如果有错误的希望,朋友们可以指出!