Javascript学习笔记的功能文本(二):该机制的工作机制

全球范围

这;

当在全局作用域中使用它时,它指向全局对象。

这是对全局对象的详细描述:

全局对象(全局对象)是在进入任何执行上下文之前创建的对象;

这个对象只有一个副本,它的属性可以在程序的任何地方访问,当程序退出时,全局对象的生命周期终止。

数学,字符串,日期和parseInt作为全局对象的初始化阶段自身属性。属性和其他对象的初始化也可以是附加属性,这些属性可以指向全局对象本身,例如,在DOM中,全局对象的窗口属性可以引用全局对象本身。

所以在控制台窗口的输入是this.window相同。

调用函数时

(富);

在这里,这也指向全局对象。

调用方法时

Test.foo();

在这个例子中,这将指向测试对象。

当构造函数被调用时

新富();

函数在调用时与关键字new一起使用,我们称之为构造函数。在函数中的这个点指向新对象。

显式设置


函数(a,b,c){

var bar = };
foo.apply(酒吧,{ 1, 2, 3 }); / /阵列将扩大至以下
foo.call(酒吧,1, 2, 3); / /结果A = 1,B = 2,C = 3


使用时,调用的方法function.prototype的申请,该值显式设置为该方法的第一个参数。

因此,在本例中的规则调用函数时,将此调用到。

下面是调用和应用方法:

呼叫的方法:

语法:电话(thisobj { { { {,arg1,arg2,{,argn }}}}}。)

定义:调用对象并用另一个对象替换当前对象的一种方法。

申请方法:

语法:申请({ thisobj argarray } {,})

定义:应用一个对象并用另一个对象替换当前对象的一种方法。

在这里,我们应该意识到,当对象的字面声明被创建时,这个不能用来指向对象本身:


var obj = {我:这}


在这里,这不是指向obj,以及该应用程序被限制在五以上。

总结

尽管上述情况在大多数情况下都是有意义的,但在第二种情况下,这称为函数,这一点用处不大,这被认为是Javascript设计中的另一个错误。


foo.method =函数(){
函数测试(){
这被设置为全局 / 对象
}
测试();
}


根据我们上面所描述的,这里将指向全局对象,而不是富函数。

为了在测试中找到指向点的方法,我们需要在方法中创建一个局部变量来指向。


foo.method =函数(){
var =;
函数测试(){
而不是在这里使用
}
测试();
}


这只是一个公共变量名,但它通常用来指向外部变量。

另一个有趣的地方是与函数别名相关的函数别名,也就是当一个方法赋给一个变量时。


VaR测试= someobject.methodtest;
测试();


在这个例子中,测试将被视为一个正常的功能,所以根据二情况(即调用函数),其内部将指向全局变量,而不是someobject。

虽然后期绑定在后期绑定的开始看来是一个错误的决定,但实际上它是原型继承工作的基础。


函数(富){ }
foo.prototype.method =函数(){ };

函数(bar){ }
bar.prototype = foo.prototype;

新的bar()方法();


此时,调用该方法时,它将指向bar的实例对象。