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的实例对象。