您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

javascript的this使用方法有哪些

2024/11/10 4:42:37发布25次查看
javascript的this使用方法:1、函数有所属对象时,指向所属对象;2、函数没有所属对象,指向全局对象;3、构造器中的this,指向新对象。
本教程操作环境:windows7系统、javascript1.8.5版,dell g3电脑。
javascript的this使用方法:
1) 函数有所属对象时:指向所属对象
函数有所属对象时,通常通过 . 表达式调用,这时 this 自然指向所属对象。比如下面的例子:
var myobject = {value: 100};myobject.getvalue = function () { console.log(this.value); // 输出 100 // 输出 { value: 100, getvalue: [function] }, // 其实就是 myobject 对象本身 console.log(this); return this.value;}; console.log(myobject.getvalue()); // => 100
getvalue() 属于对象 myobject,并由 myojbect 进行 . 调用,因此 this 指向对象 myobject。
2) 函数没有所属对象:指向全局对象
var myobject = {value: 100};myobject.getvalue = function () { var foo = function () { console.log(this.value) // => undefined console.log(this);// 输出全局对象 global }; foo(); return this.value;}; console.log(myobject.getvalue()); // => 100
在上述代码块中,foo 函数虽然定义在 getvalue 的函数体内,但实际上它既不属于 getvalue 也不属于 myobject。foo 并没有被绑定在任何对象上,所以当调用时,它的 this 指针指向了全局对象 global。
据说这是个设计错误。
3) 构造器中的 this:指向新对象
js 中,我们通过 new 关键词来调用构造函数,此时 this 会绑定在该新对象上。
var someclass = function(){ this.value = 100;} var mycreate = new someclass(); console.log(mycreate.value); // 输出100
顺便说一句,在 js 中,构造函数、普通函数、对象方法、闭包,这四者没有明确界线。界线都在人的心中。
4) apply 和 call 调用以及 bind 绑定:指向绑定的对象
apply() 方法接受两个参数第一个是函数运行的作用域,另外一个是一个参数数组(arguments)。
call() 方法第一个参数的意义与 apply() 方法相同,只是其他的参数需要一个个列举出来。
简单来说,call 的方式更接近我们平时调用函数,而 apply 需要我们传递 array 形式的数组给它。它们是可以互相转换的。
var myobject = {value: 100}; var foo = function(){ console.log(this);}; foo(); // 全局变量 globalfoo.apply(myobject); // { value: 100 }foo.call(myobject); // { value: 100 } var newfoo = foo.bind(myobject);newfoo(); // { value: 100 }
相关免费学习推荐:javascript视频教程
以上就是javascript的this使用方法有哪些的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product