成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

關(guān)于javascript中this的trick

Euphoria / 2956人閱讀

摘要:看如下對(duì)象定義這樣能正常調(diào)用下面的調(diào)用會(huì)出錯(cuò)因?yàn)?,指向已?jīng)改變,正確的方式如下所有函數(shù)都有其特殊的變量,如下面的調(diào)用會(huì)產(chǎn)生一個(gè)錯(cuò)誤解決方案一將保存在不同的變量中解決方案二利用的第二個(gè)參數(shù),它可以給指定一個(gè)值

看如下對(duì)象定義:
"use strict"
var jane = {
    name : ‘Jane’,
    display : function(){
        retrun "Person named " + this.name;
    }
};
這樣能正常調(diào)用

jane.display();

下面的調(diào)用會(huì)出錯(cuò):

var func = jane.display;
func()
TypeError: Cannot read property "name" of undefined

因?yàn)?,this指向已經(jīng)改變,正確的方式如下:

var func2 = jane.display.bind(jane);
func2()
"Penson named Jane"

所有函數(shù)都有其特殊的this變量,如下面的forEach
var jane = {
    name : "Jane",
    friends: ["Tarzan", "Cheeta"],
    sayHiToFriends: function(){
        "use strict";
        this.friends.forEach(function(friend) {
            // "this" is undefined here
            console.log(this.name + " says hi to "+ friend);
        });
    }
}   
調(diào)用sayHiToFriends會(huì)產(chǎn)生一個(gè)錯(cuò)誤:

jane.sayHiToFriends()
TypeError: Cannot read property "name" of undefined

解決方案一:將this保存在不同的變量中
var jane = {
    name : "Jane",
    friends: ["Tarzan", "Cheeta"],
    sayHiToFriends: function(){
        "use strict";
        var that = this;
        this.friends.forEach(function(friend) {
            console.log(that.name + " says hi to "+ friend);
        });
    }
}  
解決方案二:利用forEach的第二個(gè)參數(shù),它可以給this指定一個(gè)值
var jane = {
    name : "Jane",
    friends: ["Tarzan", "Cheeta"],
    sayHiToFriends: function(){
        "use strict";
        this.friends.forEach(function(friend) {
            console.log(this.name + " says hi to "+ friend);
        }, this);
    }
}  

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79073.html

相關(guān)文章

  • Nodejs一些小trick

    摘要:要達(dá)到想要的效果正確的做法是即用來產(chǎn)生一個(gè)立即作用域,保證回調(diào)函數(shù)執(zhí)行的時(shí)候最近的原型作用域的就是當(dāng)時(shí)循環(huán)的。判斷數(shù)組中是否存在滿足條件的項(xiàng),只要有一項(xiàng)滿足條件,就會(huì)返回。 之前常常因?yàn)椴蛔⒁?,?xí)慣用寫PHP或者Java的方式來寫nodejs,產(chǎn)生了了一些錯(cuò)誤,這里總結(jié)一些小小的trick,以便于展示nodejs的不同,和平時(shí)需要注意的地方。 變量提升 var variable = g...

    tomorrowwu 評(píng)論0 收藏0
  • 面試寶典

    摘要:有談?wù)劽嬖嚺c面試題對(duì)于前端面試的一些看法。動(dòng)態(tài)規(guī)劃算法的思想及實(shí)現(xiàn)方法幫大家理清動(dòng)態(tài)規(guī)劃的解決思路以及原理方法前端經(jīng)典面試題從輸入到頁面加載發(fā)生了什么這是一篇開發(fā)的科普類文章,涉及到優(yōu)化等多個(gè)方面。極客學(xué)院前端練習(xí)題道練習(xí)題,面試季練練手。 由數(shù)據(jù)綁定和排序引入的幾個(gè) JavaScript 知識(shí)點(diǎn) 在 JavaScript 的數(shù)據(jù)綁定和做簡(jiǎn)單的表格排序中遇到的幾個(gè)知識(shí)點(diǎn) [[JS 基礎(chǔ)...

    neu 評(píng)論0 收藏0
  • 關(guān)于JavaScript調(diào)試十來個(gè)小Tips

    摘要:系列文章的人懶事多,最近翻多寫少啊。不過當(dāng)我們調(diào)試我們自己的腳本的時(shí)候也會(huì)一不小心跳到這些文件中,引發(fā)額外的調(diào)試任務(wù)。 系列文章的Github Repo人懶事多,最近翻多寫少啊。原文地址這里 ‘debugger;’ 除了console.log,debugger就是另一個(gè)我很喜歡的快速調(diào)試的工具,將debugger加入代碼之后,Chrome會(huì)自動(dòng)在插入它的地方停止,很像C或者Java里面...

    Dongjie_Liu 評(píng)論0 收藏0
  • 【譯】讓人傾倒 11 個(gè) npm trick

    摘要:沒有安裝全局某個(gè)項(xiàng)目不影響該命令的使用。該標(biāo)志會(huì)安裝,忽略。這會(huì)確保開發(fā)所使用的工具及不會(huì)進(jìn)入生產(chǎn)環(huán)境。結(jié)果就是,發(fā)布項(xiàng)目時(shí),不得不審查兩個(gè)文件是否同步,防止敏感信息的泄露。確保更改默認(rèn)的用戶名,作為用戶名環(huán)境變量的值。 本文轉(zhuǎn)載自:眾成翻譯譯者:文藺鏈接:http://www.zcfy.cc/article/1206原文:https://nodesource.com/blog/ele...

    Tangpj 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<