thisの例2について

19028 ワード

下記のコードは正常に動作します.
コード1:

  
  
  
  
  1. <html>  
  2. <head>  
  3.    <title>this obj</title>  
  4. </head>  
  5. <body>  
  6. <script>  
  7. <!--  
  8.  
  9.     function Utility(){   
  10.         this.decode = function(str){ return unescape(str); };   
  11.         this.getCookie = function(key){ // ...  cookie   
  12.             var value = "i%27m%20a%20cookie";         
  13.             return this.decode(value);   
  14.         }   
  15.     };   
  16.    alert((new Utility).getCookie()); 
  17. -->  
  18. </script>  
  19. </body>  
  20. </html>  
上のコードは下記のように修正されました.エラーで実行できません.

  
  
  
  
  1. <html>  
  2. <head>  
  3.    <title>this obj</title>  
  4. </head>  
  5. <body>  
  6. <script>  
  7. <!--   
  8.     function Utility(){   
  9.         this.decode = function(str){ return unescape(str); };   
  10.         this.getCookie = function(key){ // ...  cookie   
  11.             var value = "i%27m%20a%20cookie";         
  12.             return decode(value);   
  13.         }   
  14.     };   
  15.    alert((new Utility).getCookie()); 
  16. -->  
  17. </script>  
  18. </body>  
  19. </html>  
 エラーメッセージ:
decode is not defined return decode;
コード1は次のように修正できます.

  
  
  
  
  1. <html>   
  2. <head>   
  3.    <title>this obj</title>   
  4. </head>   
  5. <body>   
  6. <script>   
  7. <!--   
  8.   
  9.     var Utility = {    
  10.         decode:function(str){ return unescape(str); },    
  11.         getCookie:function(key){ // ...  cookie    
  12.             var value = "i%27m%20a%20cookie";          
  13.             return Utility.decode(value);    
  14.         }    
  15.     };  
  16.    alert(Utility.getCookie());  
  17. -->   
  18. </script>   
  19. </body>   
  20. </html>  

 
Extjs 4を使う過程で同じ問題に遭遇しました.一時的に隠しました.コードは以下の通りです.
lesson 02_06.

  
  
  
  
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
  2. <html> 
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
  5. <title>Ext.create</title> 
  6. <link rel="stylesheet" type="text/css" href="../extjs-4.1.0/resources/css/ext-all.css"/> 
  7. <script type="text/javascript" src="../extjs-4.1.0/bootstrap.js"></script> 
  8. <script type="text/javascript" src="indexDemo6.js"></script> 
  9. </head> 
  10. <body> 
  11. </body> 
  12. </html> 
indexDemo 6.js

  
  
  
  
  1. (function(){ 
  2.     Ext.onReady(function(){ 
  3.     Ext.define("myWin",{ 
  4.       extend:'Ext.window.Window'
  5.           width:400, 
  6.           height:300, 
  7.           title:'uspcat'
  8.           newtitle:'new uspcat'
  9.           mySetTitle:function(){ 
  10.             this.title = this.newtitle; 
  11.           }, 
  12.       initComponent: function(){ 
  13.             mySetTitle(); 
  14.         this.callParent(arguments); 
  15.       } 
  16.     }); 
  17.         Ext.create('myWin',{ 
  18.       title:'my win' 
  19.     }).show(); 
  20.     }); 
  21. })(); 
 
運転結果は以下の通りです.
mySetTitle is not defined mySetTitle()
indexDemo 6.jsは以下の通り修正されました.mySetTitle()修正:this.mysSetTitle()

  
  
  
  
  1. (function(){ 
  2.     Ext.onReady(function(){ 
  3.     Ext.define("myWin",{ 
  4.       extend:'Ext.window.Window'
  5.           width:400, 
  6.           height:300, 
  7.           title:'uspcat'
  8.           newtitle:'new uspcat'
  9.           mySetTitle:function(){ 
  10.             this.title = this.newtitle; 
  11.           }, 
  12.       initComponent: function(){ 
  13.             this.mySetTitle(); 
  14.         this.callParent(arguments); 
  15.       } 
  16.     }); 
  17.         Ext.create('myWin',{ 
  18.       title:'my win' 
  19.     }).show(); 
  20.     }); 
  21. })(); 
---------------------------------------------

  
  
  
  
  1. <html>  
  2. <head>  
  3.    <title>this obj</title>  
  4. </head>  
  5. <body>  
  6. <script>  
  7. <!--  
  8.     function Utility(){   
  9.         this.decode = function(str){ return unescape(str); };   
  10.         this.getCookie = function(key){ // ...  cookie   
  11.             var value = "i%27m%20a%20cookie";         
  12.             return this.decode(value);   
  13.         }   
  14.     };   
  15.    function showUserIdentity(){   
  16.         //  getCookie ,   
  17.         var getCookie = Utility.getCookie; // , Utility  
  18.      alert(getCookie);  
  19.     } 
  20.   showUserIdentity(); 
  21. -->  
  22. </script>  
  23. </body>  
  24. </html>  
実行結果:
undefined 
111