js 之 this call apply

前端开发 作者: 2024-08-25 20:10:01
(一)关于this首先关于this我想说一句话,这句话记住了this的用法你也就差不多都能明白了:this指的是当前函数的对象。这句话可能比较绕,我会举出很多例子和这句话呼应的!(看下文)1.首先看下
Js代码  
  1. function doSomething(){  
  2.      alert(this);  
  3. }  
  4. doSomething();  
我是在firefox里面调试的,所以返回的结果是[Object Window]。
那么这个 [Object Window], 到底是什么呢?看看下面的代码
Js代码  
  1. function doSomething(){  
  2.      alert(this===window);  
  3. }  
  4. doSomething();  
 
看到弹出了true, 也就是说在这种正常情况下,this其实就是window
所以,我们定义了一个全局的变量的时候,可以
var test="Tony";
也可以
window["test"]="Tony";
下面这个例子,进一步说明,正常情况下,函数里的this就是window
Js代码  
  1. var test="Tony";  
  2. function doSomething(){  
  3.      alert(this.test);     //弹出 "Tony";  
  4.      alert(window.test);   //弹出 "Tony";  
  5. }  
  6. doSomething();  
 
Js代码  
  1. var name ="The Window";                     //创建了一个全局变量name  
  2. var object = {                       //又创建了一个对象(创建对象的方法有很多种)  
  3.       name:"My Object",                //创建了一个name属性(属性就是引用非函数)  
  4.       doSomething:function(){          //创建了一个doSomething方法(方法就是引用了函数)  
  5.              return function(){       //这个doSomething方法返回一个匿名函数  
  6.                   return this.name;    //这个匿名函数又返回this.name  
  7.           };  
  8.     }  
  9. };  
  10. alert(object.doSomething()());  
  11.                             //由于这个doSomething方法返回的一个函数,所以这样就可以调用这个函数了  
Js代码  
  1. var name ="The Window";                      
  2. var object = {                        
  3.      name:"My Object",                
  4.      doSomething:function(){  
  5.            var abc = this ;          
  6.            return function(){        
  7.                   return abc.name;     
  8.            };  
  9.       }  
  10. };  
  11. alert(object.doSomething()());  
Js代码  
  1. var test="Tony";  
  2. function doSomething(){  
  3.     alert(this.test);     //弹出 "Tony";  
  4. }  
  5.   
  6. doSomething(); //   [调用]  doSomething();  
  7. doSomething.call(); // 函数.调用()  
Js代码  
  1. var test="Tony";  
  2. var myobj={  
  3.     test : "Tom"  
  4. };  
  5. function doSomething(){  
  6.     alert(this.test);     
  7. }  
  8. toolmao.call(); // 弹出 window.test   ,即 "Tony"  
  9. toolmao.call(myobj); // 这个时候,doSomething函数里的this指向 myobj,  
  10.                           //所以弹出的是 myobj.test 即 "Tom"  
Js代码  
  1. var test="Tony";  
  2. var myobj={  
  3.     test : "Tom"  
  4. };  
  5. function doSomething(name, age){  
  6.     alert(this.test + ":" + name + age);    
  7. }  
  8.   
  9. doSomething("Tony",23);//普通调用 结果Tony:Tony23  
  10. doSomething.call(myobj,"Tony",23);//call调用结果Tom:Tony23  
Js代码  
  1. var test="Tony";  
  2. var myobj={  
  3.      test : "Tom"  
  4. };  
  5. function doSomething(name, age){  
  6.     alert(this.test + ":" + name + age);    
  7. }  
  8. doSomething("Tony",23);//call调用结果Tom:Tony23  
  9. doSomething.apply(object,["Tony",23]);//apply调用 结果与call相同  
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_68577.html
js 之 this call apply