1. 程式人生 > >Javascript中的var self = this

Javascript中的var self = this

第一個 自己 全局對象 定義函數 參數 sca clas IT nbsp

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>

    <body>
        <script type="text/javascript">
            //            javascript中每個函數解析時, 都會創建兩個特殊的變量: 
            //            這和參數, 這兩個變量都能在函數體內訪問, 所以每個函數都有屬於自己的這個對象和參數
// // 當然這個該對象是在執行時基於函數的執行環境綁定的, // // 即在全局對象中, 這指向的是窗口對象; // 在自定義函數中, 這個對象指向的是調用這個函數的對象; // 下面這個函數執行的時候, 第一個這樣指向的就是窗口對象, // 因為它在窗口環境下執行的, 第二個這種對象指向的是objThis對象, //
因為它在objThis對象下執行的 var wsscat = function(name) { var self = this; this.name = name; console.log(this); console.log(self); } wsscat(‘wsscat‘); window.wsscat(‘wsscat‘); //因為它在window對象下執行的
var objThis = { x: ‘autumns‘, wsscat: wsscat } objThis.wsscat(); //因為它在objThis對象下執行的 // 當我們把這個構造函數變成對象的時候,這個本就是指向自己的wsscat對象 var wsscat = function(name) { var self = this; this.name = name; console.log(this); console.log(self); } ////通過構造函數new一個新對象時,this就指這個新對象 var obj = new wsscat(‘wsscat‘); //log wsscat{name:‘wsscat‘}對象 // 這個給出一個私有的自我參數,這個可以令對象這個對私有方法func3可見, // 所以當我們在構造函數中出現閉包(私有函數/嵌套函數下面例子中的函數func3())都要註意, // 此時裏面的這個是屬於窗口對象的 var wsscat = function(name) { var self = this; var x = ‘autumns‘; this.name = name; console.log(this); console.log(self); this.func = function() { console.log("wsscat‘s func"); }; this.func2 = function() { func3(); //不能用self.func3()和this.func3() } //閉包裏面,既嵌套函數裏面如果想使用wsscat對象的方法或者變量要用self function func3() { console.log(this) //指向window對象 //this.func();//報錯this.func is not a function self.func(); //不能用this.func(),也不能用func() console.log("wsscat‘s func3"); } } var obj = new wsscat(‘wsscat‘); obj.func2() </script> </body> </html>

Javascript中的var self = this