国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

javascript - js中 this的問題

瀏覽:87日期:2023-05-18 09:49:13

問題描述

js小白 遇到的問題先上代碼

var name = 'John';var myObject = function() { return {getName: function() { return this.name;} }}();alert(myObject.getName());

輸出的結果是undefined 我的問題是1. return里面的getName的function是不是匿名函數 我現在理解的是匿名函數 那么這個this應該就是指向全局吧?就是window 那為啥不輸出john 2.讓我更困惑的是,我在調試時候一步步走,走到this.name的時候,this指向的是Object 而當輸出完undefined的時候,我在監視那里的this變成了window,this.name也變成了john,不太明白,求大蝦解救!

問題解答

回答1:

這個問題需要一步一步看,首先是myObject是一個對象,上面有個屬性是getName,值是一個匿名函數,alert(myObject.getName());,就是這個對象在調用這個方法,所有這個時候的this就是undefined。

//var name = 'John';var myObject = function() { return {getName: function() { return this.name;} }}();var f = myObject.getName;alert(f()); //John// 這樣就返回的是John,因為這個時候的getName是在全局執行的,this指向的就是window。var name = 'John';var myObject = function() { return {getName: () => { return this.name;} }}();alert(myObject.getName()); //John// 也可以通過es6修正this的指向

再次做下擴展,看下面的代碼

var object = {name: ’lucy’,getName: function() { return function () {return this.name }} } console.log(object.getName()()) //John

object.getName()方法返回的是一個匿名函數,執行環境是全局作用域,this的指向基于函數的執行作用域所以是window,這個時候window.name是John。如果我們想返回lucy,就需要通過創建一個箭頭函數或者閉包來實現。

var object = { name: ’lucy’, getName: function() { console.log(this)return () => { return this.name} }} console.log(object.getName()()) //lucy var object = { name: ’lucy’, getName: function() {var that = this;return function () { return that.name} }} console.log(object.getName()()) //lucy

箭頭函數體內的this對象,就是定義時所在的對象,而不是使用時所在的對象。

至于你說的調試this指向改變問題,是因為匿名函數原本的作用域是window,但當執行的時候是myObject調用了它,所以this在那一刻指向了myObject。

回答2:

var name = 'John';var myObject = function() { return {getName: function() { return this.name;}, name: ’eczn’ }}();myObject.getName(); // => // 'eczn'

getName 的 this 指的是 myObject,因為 getName 直接是 myObject 所調用的,所以這里的 this 指的是 ———— 調用函數的那個對象

回答3:

myObject.getName()通常情況下誰調用了某個函數,這個函數中的this就指向誰啦

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 另类二区三四 | 久久久国产乱子伦精品 | 人人公开免费超级碰碰碰视频 | 久久女同互慰一区二区三区 | 美女的让男人桶到爽软件 | 久久久久久久久a免费 | 国产真实生活伦对白 | 天堂一区二区三区精品 | 精品三级在线观看 | 最新国产美女一区二区三区 | 手机看片欧美 | 亚洲成人在线播放视频 | 欧美成人亚洲高清在线观看 | 色a在线| 国产精品免费久久久免费 | 日韩毛片免费视频一级特黄 | 精品一区二区三区在线视频 | 久热精品免费视频 | 精品一区二区三区五区六区 | 日本一区二区三区不卡视频中文字幕 | 美女在线网站免费的 | 国产成人精品日本亚洲语音2 | 亚洲在线天堂 | 亚洲成人视 | 午夜视频网站 | 亚洲日本久久一区二区va | 偷拍自拍第一页 | 久久黄色免费网站 | 99久久精品免费看国产免费 | 97久久天天综合色天天综合色 | 美女被爆免费视频软件 | 日本亚洲成高清一区二区三区 | 国产猛烈无遮掩视频免费网站男女 | 国产三级精品在线观看 | 九九99香蕉在线视频免费 | 一区二区亚洲精品 | 精品一区二区三区在线视频 | gv手机在线观看 | 欧美日韩一区二区在线视频 | 一级片中文字幕 | 亚洲精品一区二区三区第四页 |