js之this指標__js

來源:互聯網
上載者:User
var clientData = {    id: 094545,    fullName: "Not Set",    // setUserName is a method on the clientData object    setUserName: function (firstName, lastName)  {        // this refers to the fullName property in this object      this.fullName = firstName + " " + lastName;    }}clientData.setUserName(firstName, lastName)是一個全域函數。getUserInput ("Barack", "Obama", clientData.setUserName);console.log (clientData.fullName);// Not Set

這種情況得出 Not Set;

而clientData.setUserName(firstName, lastName);則會得出正確的結論;

這是因為:當把 clientData.setUserName當做是一個參數進行傳遞時,它僅僅是一個函數,跟上面不同;
把它當做參數時,有點兒像直接返回一個函數,並沒有傳遞其它的東西;
也可以像書上似的,定義一個that給吧name強制添加帶上(等於把name鎖住),這兒並沒有,因此只能是windows了;

為了改變this,只能用apply或call來保證this;

而書上閉包那種形式出現windows則是另一種情況;屬於直接調用函數,;this情況特殊;永遠屬於當前的範圍;

即只要把對象中的這個函數賦值給其它的東西時,這個對象的範圍也就不存在了;
參考:javaScript進階程式設計,
http://blog.csdn.net/luoweifu/article/details/41466537

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.