Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产精品亚洲精品影院,久久成人亚洲香蕉草草,97在线精品视频

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          為什么要學(xué)習(xí)HTML?HTML會(huì)過(guò)時(shí)嗎?

          編程有沒(méi)有必要學(xué) HTML 呢?這是編程初學(xué)者中非常普遍的問(wèn)題,而且在網(wǎng)上意見分歧很大。關(guān)于初學(xué)者在學(xué)習(xí) HTML 前的一些常見問(wèn)題,編程獅W3Cschool整理了以下資料希望對(duì)你有所幫助:

          學(xué)編程不需要學(xué)習(xí)HTML?

          那些說(shuō)不需要 HTML 知識(shí)的人要么不了解 Web 設(shè)計(jì),要么別有用心。雖然現(xiàn)在哪怕不會(huì) HTML 也有其他方法可以解決 web 設(shè)計(jì)相關(guān)問(wèn)題,但絕大多數(shù)資深前端開發(fā)者還是會(huì)建議你最好還是要學(xué)習(xí)它的。

          沒(méi)有時(shí)間學(xué)習(xí)HTML?

          通常了解基本知識(shí)只需要20到40分鐘。花幾個(gè)小時(shí)學(xué)習(xí) w3cschool官網(wǎng) 的《HTML 教程 》和《HTML 微課 》,你就可以制作一個(gè)簡(jiǎn)單而完整的網(wǎng)頁(yè)。如果你愿意每周花幾個(gè)小時(shí),學(xué)習(xí)幾個(gè)月的 《前端開發(fā)體系課程 _ 》,那么您將對(duì)網(wǎng)站的工作方式有一個(gè)很好的了解。這種時(shí)間上的投資將獲得很大的回報(bào)比。試想下,如果你本周花在學(xué)習(xí)上一小時(shí),未來(lái)的工作上每個(gè)月都將永遠(yuǎn)節(jié)省一個(gè)小時(shí)。盡管投資回收期在開始時(shí)比較緩慢,但你最終可以只需要花費(fèi)一小部分時(shí)間用來(lái)完成工作,你覺(jué)得值得嗎?

          編寫HTML太慢?

          這是勸退很多人的一個(gè)原因,但實(shí)際上這個(gè)問(wèn)題是不存在的。因?yàn)榇蠖鄶?shù)情況下我們不需要編寫 HTML 代碼,只需了解它即可。

          我有一個(gè)很好的所見即所得編輯器,所以我不需要HTML

          市面上有很多可視化的工具如 WYSIWYG 、Dreamweaver及現(xiàn)在越來(lái)越多的”低代碼“云開發(fā)工具等,它可以幫助你更高效地工作。如前所述,你并不是要手動(dòng)輸入 HTML 代碼,而是要了解 HTML 的工作原理。

          例如:射釘槍能比錘子更快地幫助您建造房屋,但是如果你不知道如何搭建框架以及將釘子釘在何處,造出來(lái)的房屋很可能會(huì)倒塌。我們需要了解如何手動(dòng)構(gòu)造 HTML,然后使用所見即所得工具更快地工作。

          PS:所見即所得的編輯器永遠(yuǎn)不會(huì)是完美的,總有時(shí)候是需要我們手動(dòng)來(lái)調(diào)整 HTML。。

          我不擅長(zhǎng)學(xué)習(xí)計(jì)算機(jī)語(yǔ)言

          放心,雖然我們時(shí)常把它稱為語(yǔ)言,但其實(shí) HTML 并不是一種編程語(yǔ)言(從技術(shù)上講,HTML 被稱為“mark up”語(yǔ)言,也就是標(biāo)記語(yǔ)言,英文全稱是“HyperText Markup Language”。)。從難度上講,它就像是小孩子們的“密碼”游戲。真正難點(diǎn)在于要學(xué)習(xí)的東西太多了,但是請(qǐng)記住,你不必全部都學(xué)會(huì)!只要按照自己的步調(diào)學(xué)習(xí)盡可能多的知識(shí)即可。

          不要將費(fèi)時(shí)困難混淆。HTML 很耗時(shí),但是并不難。另外,你不需要學(xué)會(huì)全部知識(shí)點(diǎn),即使只花費(fèi)幾個(gè)小時(shí)來(lái)學(xué)習(xí)基本結(jié)構(gòu)也將極大地幫助你。

          HTML會(huì)過(guò)時(shí)嗎?

          不會(huì)。其他編程語(yǔ)言一直在發(fā)展中,并且很可能最終會(huì)取代 HTML,但是 HTML 將在很長(zhǎng)一段時(shí)間內(nèi)繼續(xù)作為幾乎所有網(wǎng)站的基礎(chǔ)。在任何情況下,HTML 都會(huì)為您提供堅(jiān)實(shí)的基礎(chǔ),然后再采用 XML 等新語(yǔ)言。

          HTML對(duì)我而言太過(guò)局限了

          如果您的目的是創(chuàng)建網(wǎng)頁(yè),那么很抱歉告訴你,無(wú)論你喜不喜歡,你只能選擇 HTML,因?yàn)樗菢?gòu)成網(wǎng)絡(luò)構(gòu)成的基礎(chǔ)。如果你真的想以其他格式(例如PDF)來(lái)傳送,請(qǐng)注意,它并不是一個(gè)網(wǎng)頁(yè),所以它不能實(shí)現(xiàn)我們?cè)诰W(wǎng)頁(yè)中的一些常見功能。

          以上就是編程獅W3Cschool為你整理的關(guān)于《為什么要學(xué)習(xí)HTML?HTML會(huì)過(guò)時(shí)嗎?》的全部?jī)?nèi)容,現(xiàn)在你要開始學(xué)習(xí) HTML 了嗎?

          文將通過(guò)簡(jiǎn)單的術(shù)語(yǔ)和真實(shí)世界的例子解釋 JavaScript 中 this 及其用途,并告訴你寫出好的代碼為何如此重要。

          1.this 適合你嗎?

          我看到許多文章在介紹 JavaScript 的 this 時(shí)都會(huì)假設(shè)你學(xué)過(guò)某種面向?qū)ο蟮木幊陶Z(yǔ)言,比如 Java、C++ 或 Python 等。但這篇文章面向的讀者是那些不知道 this 是什么的人。我盡量不用任何術(shù)語(yǔ)來(lái)解釋 this 是什么,以及 this 的用法。

          也許你一直不敢解開 this 的秘密,因?yàn)樗雌饋?lái)挺奇怪也挺嚇人的。或許你只在 StackOverflow 說(shuō)你需要用它的時(shí)候(比如在 React 里實(shí)現(xiàn)某個(gè)功能)才會(huì)使用。

          在深入介紹 this 之前,我們首先需要理解函數(shù)式編程和面向?qū)ο缶幊讨g的區(qū)別。

          2.函數(shù)式編程 vs 面向?qū)ο缶幊?/strong>

          你可能不知道,JavaScript 同時(shí)擁有面向?qū)ο蠛秃瘮?shù)式的結(jié)構(gòu),所以你可以自己選擇用哪種風(fēng)格,或者兩者都用。

          我在很早以前使用 JavaScript 時(shí)就喜歡函數(shù)式編程,而且會(huì)像躲避瘟疫一樣避開面向?qū)ο缶幊蹋驗(yàn)槲也焕斫饷嫦驅(qū)ο笾械年P(guān)鍵字,比如 this。我不知道為什么要用 this。似乎沒(méi)有它我也可以做好所有的工作。

          而且我是對(duì)的。

          在某種意義上 。也許你可以只專注于一種結(jié)構(gòu)并且完全忽略另一種,但這樣你只能是一個(gè) JavaScript 開發(fā)者。為了解釋函數(shù)式和面向?qū)ο笾g的區(qū)別,下面我們通過(guò)一個(gè)數(shù)組來(lái)舉例說(shuō)明,數(shù)組的內(nèi)容是 Facebook 的好友列表。

          假設(shè)你要做一個(gè) Web 應(yīng)用,當(dāng)用戶使用 Facebook 登錄你的 Web 應(yīng)用時(shí),需要顯示他們的 Facebook 的好友信息。你需要訪問(wèn) Facebook 并獲得用戶的好友數(shù)據(jù)。這些數(shù)據(jù)可能是 firstName、lastName、username、numFriends、friendData、birthday 和 lastTenPosts 等信息。

          const data = [
           {
           firstName: 'Bob',
           lastName: 'Ross',
           username: 'bob.ross', 
           numFriends: 125,
           birthday: '2/23/1985',
           lastTenPosts: ['What a nice day', 'I love Kanye West', ...],
           },
           ...
          ]
          

          假設(shè)上述數(shù)據(jù)是你通過(guò) Facebook API 獲得的。現(xiàn)在需要將其轉(zhuǎn)換成方便你的項(xiàng)目使用的格式。我們假設(shè)你想顯示的好友信息如下:

          • 姓名,格式為`${firstName} ${lastName}`
          • 三篇隨機(jī)文章
          • 距離生日的天數(shù)

          3.函數(shù)式方式

          函數(shù)式的方式就是將整個(gè)數(shù)組或者數(shù)組中的某個(gè)元素傳遞給某個(gè)函數(shù),然后返回你需要的信息:

          const fullNames = getFullNames(data)
          // ['Ross, Bob', 'Smith, Joanna', ...]
          

          首先我們有 Facebook API 返回的原始數(shù)據(jù)。為了將其轉(zhuǎn)換成需要的格式,首先要將數(shù)據(jù)傳遞給一個(gè)函數(shù),函數(shù)的輸出是(或者包含)經(jīng)過(guò)修改的數(shù)據(jù),這些數(shù)據(jù)可以在應(yīng)用中向用戶展示。

          我們可以用類似的方法獲得隨機(jī)三篇文章,并且計(jì)算距離好友生日的天數(shù)。

          函數(shù)式的方式是:將原始數(shù)據(jù)傳遞給一個(gè)函數(shù)或者多個(gè)函數(shù),獲得對(duì)你的項(xiàng)目有用的數(shù)據(jù)格式。

          4.面向?qū)ο蟮姆绞?/strong>

          對(duì)于編程初學(xué)者和 JavaScript 初學(xué)者,面向?qū)ο蟮母拍羁赡苡悬c(diǎn)難以理解。其思想是,我們要將每個(gè)好友變成一個(gè)對(duì)象,這個(gè)對(duì)象能夠生成你一切開發(fā)者需要的東西。

          你可以創(chuàng)建一個(gè)對(duì)象,這個(gè)對(duì)象對(duì)應(yīng)于某個(gè)好友,它有 fullName 屬性,還有兩個(gè)函數(shù) getThreeRandomPosts 和 getDaysUntilBirthday。

          function initializeFriend(data) {
           return {
           fullName: `${data.firstName} ${data.lastName}`,
           getThreeRandomPosts: function() {
           // get three random posts from data.lastTenPosts
           },
           getDaysUntilBirthday: function() {
           // use data.birthday to get the num days until birthday
           }
           };
          }
          const objectFriends = data.map(initializeFriend)
          objectFriends[0].getThreeRandomPosts() 
          // Gets three of Bob Ross's posts
          

          面向?qū)ο蟮姆绞骄褪菫閿?shù)據(jù)創(chuàng)建對(duì)象,每個(gè)對(duì)象都有自己的狀態(tài),并且包含必要的信息,能夠生成需要的數(shù)據(jù)。

          5.這跟 this 有什么關(guān)系?

          你也許從來(lái)沒(méi)想過(guò)要寫上面的 initializeFriend 代碼,而且你也許認(rèn)為,這種代碼可能會(huì)很有用。但你也注意到,這并不是真正的面向?qū)ο蟆?/p>

          其原因就是,上面例子中的 getThreeRandomPosts 或 getdaysUntilBirtyday 能夠正常工作的原因其實(shí)是閉包。因?yàn)槭褂昧碎]包,它們?cè)?initializeFriend 返回之后依然能訪問(wèn) data。關(guān)于閉包的更多信息可以看看這篇文章:作用域和閉包(https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20%26%20closures/ch5.md)。

          還有一個(gè)方法該怎么處理?我們假設(shè)這個(gè)方法叫做 greeting。注意方法(與 JavaScript 的對(duì)象有關(guān)的方法)其實(shí)只是一個(gè)屬性,只不過(guò)屬性值是函數(shù)而已。我們想在 greeting 中實(shí)現(xiàn)以下功能:

          function initializeFriend(data) {
           return {
           fullName: `${data.firstName} ${data.lastName}`,
           getThreeRandomPosts: function() {
           // get three random posts from data.lastTenPosts
           },
           getDaysUntilBirthday: function() {
           // use data.birthday to get the num days until birthday
           },
           greeting: function() {
           return `Hello, this is ${fullName}'s data!`
           }
           };
          }
          

          這樣能正常工作嗎?

          不能!

          我們新建的對(duì)象能夠訪問(wèn) initializeFriend 中的一切變量,但不能訪問(wèn)這個(gè)對(duì)象本身的屬性或方法。當(dāng)然你會(huì)問(wèn),

          難道不能在 greeting 中直接用 data.firstName 和 data.lastName 嗎?

          當(dāng)然可以。但要是想在 greeting 中加入距離好友生日的天數(shù)怎么辦?我們最好還是有辦法在 greeting 中調(diào)用 getDaysUntilBirthday。

          這時(shí)輪到 this 出場(chǎng)了!

          6.終于——this 是什么

          this 在不同的環(huán)境中可以指代不同的東西。默認(rèn)的全局環(huán)境中 this 指代的是全局對(duì)象(在瀏覽器中 this 是 window 對(duì)象),這沒(méi)什么太大的用途。而在 this 的規(guī)則中具有實(shí)用性的是這一條:

          如果在對(duì)象的方法中使用 this,而該方法在該對(duì)象的上下文中調(diào)用,那么 this 指代該對(duì)象本身。

          你會(huì)說(shuō)“在該對(duì)象的上下文中調(diào)用”……是啥意思?

          別著急,我們一會(huì)兒就說(shuō)。

          所以,如果我們想從 greeting 中調(diào)用 getDaysUntilBirtyday 我們只需要寫 this.getDaysUntilBirthday,因?yàn)榇藭r(shí)的 this 就是對(duì)象本身。

          附注:不要在全局作用域的普通函數(shù)或另一個(gè)函數(shù)的作用域中使用 this!this 是個(gè)面向?qū)ο蟮臇|西,它只在對(duì)象的上下文(或類的上下文)中有意義。

          我們利用 this 來(lái)重寫 initializeFriend:

          function initializeFriend(data) {
           return {
           lastTenPosts: data.lastTenPosts,
           birthday: data.birthday, 
           fullName: `${data.firstName} ${data.lastName}`,
           getThreeRandomPosts: function() {
           // get three random posts from this.lastTenPosts
           },
           getDaysUntilBirthday: function() {
           // use this.birthday to get the num days until birthday
           },
           greeting: function() {
           const numDays = this.getDaysUntilBirthday() 
           return `Hello, this is ${this.fullName}'s data! It is ${numDays} until ${this.fullName}'s birthday!`
           }
           };
          }
          

          現(xiàn)在,在 initializeFriend 執(zhí)行結(jié)束后,該對(duì)象需要的一切都位于對(duì)象本身的作用域之內(nèi)了。我們的方法不需要再依賴于閉包,它們只會(huì)用到對(duì)象本身包含的信息。

          好吧,這是 this 的用法之一,但你說(shuō)過(guò) this 在不同的上下文中有不同的含義。那是什么意思?為什么不一定會(huì)指向?qū)ο笞约海?/p>

          有時(shí)候,你需要將 this 指向某個(gè)特定的東西。一種情況就是事件處理函數(shù)。比如我們希望在用戶點(diǎn)擊好友時(shí)打開好友的 Facebook 首頁(yè)。我們會(huì)給對(duì)象添加下面的 onClick 方法:

          function initializeFriend(data) {
           return {
           lastTenPosts: data.lastTenPosts,
           birthday: data.birthday,
           username: data.username, 
           fullName: `${data.firstName} ${data.lastName}`,
           getThreeRandomPosts: function() {
           // get three random posts from this.lastTenPosts
           },
           getDaysUntilBirthday: function() {
           // use this.birthday to get the num days until birthday
           },
           greeting: function() {
           const numDays = this.getDaysUntilBirthday() 
           return `Hello, this is ${this.fullName}'s data! It is ${numDays} until ${this.fullName}'s birthday!`
           },
           onFriendClick: function() {
           window.open(`https://facebook.com/${this.username}`)
           }
           };
          }
          

          注意我們?cè)趯?duì)象中添加了 username 屬性,這樣 onFriendClick 就能訪問(wèn)它,從而在新窗口中打開該好友的 Facebook 首頁(yè)。現(xiàn)在只需要編寫 HTML:

          <button id="Bob_Ross">
           <!-- A bunch of info associated with Bob Ross -->
          </button> 
          

          還有 JavaScript:

          const bobRossObj = initializeFriend(data[0])
          const bobRossDOMEl = document.getElementById('Bob_Ross')
          bobRossDOMEl.addEventListener("onclick", bobRossObj.onFriendClick)
          

          在上述代碼中,我們給 Bob Ross 創(chuàng)建了一個(gè)對(duì)象。然后我們拿到了 Bob Ross 對(duì)應(yīng)的 DOM 元素。然后執(zhí)行 onFriendClick 方法來(lái)打開 Bob 的 Facebook 主頁(yè)。似乎沒(méi)問(wèn)題,對(duì)吧?

          有問(wèn)題!

          哪里出錯(cuò)了?

          注意我們調(diào)用 onclick 處理程序的代碼是 bobRossObj.onFriendClick。看到問(wèn)題了嗎?要是寫成這樣的話能看出來(lái)嗎?

          bobRossDOMEl.addEventListener("onclick", function() {
           window.open(`https://facebook.com/${this.username}`)
          })
          

          現(xiàn)在看到問(wèn)題了嗎?如果把事件處理程序?qū)懗?bobRossObj.onFriendClick,實(shí)際上是把 bobRossObj.onFriendClick 上保存的函數(shù)拿出來(lái),然后作為參數(shù)傳遞。它不再“依附”在 bobRossObj 上,也就是說(shuō),this 不再指向 bobRossObj。它實(shí)際指向全局對(duì)象,也就是說(shuō) this.username 不存在。似乎我們沒(méi)什么辦法了。

          輪到綁定上場(chǎng)了!

          7.明確綁定 this

          我們需要明確地將 this 綁定到 bobRossObj 上。我們可以通過(guò) bind 實(shí)現(xiàn):

          const bobRossObj = initializeFriend(data[0])
          const bobRossDOMEl = document.getElementById('Bob_Ross')
          bobRossObj.onFriendClick = bobRossObj.onFriendClick.bind(bobRossObj)
          bobRossDOMEl.addEventListener("onclick", bobRossObj.onFriendClick)
          

          之前,this 是按照默認(rèn)的規(guī)則設(shè)置的。但使用 bind 之后,我們明確地將 bobRossObj.onFriendClick 中的 this 的值設(shè)置為 bobRossObj 對(duì)象本身。

          到此為止,我們看到了為什么要使用 this,以及為什么要明確地綁定 this。最后我們來(lái)介紹一下,this 實(shí)際上是箭頭函數(shù)。

          8.箭頭函數(shù)

          你也許注意到了箭頭函數(shù)最近很流行。人們喜歡箭頭函數(shù),因?yàn)楹芎?jiǎn)潔、很優(yōu)雅。而且你還知道箭頭函數(shù)和普通函數(shù)有點(diǎn)區(qū)別,盡管不太清楚具體區(qū)別是什么。

          簡(jiǎn)而言之,兩者的區(qū)別在于:

          在定義箭頭函數(shù)時(shí),不管 this 指向誰(shuí),箭頭函數(shù)內(nèi)部的 this 永遠(yuǎn)指向同一個(gè)東西。

          嗯……這貌似沒(méi)什么用……似乎跟普通函數(shù)的行為一樣啊?

          我們通過(guò) initializeFriend 舉例說(shuō)明。假設(shè)我們想添加一個(gè)名為 greeting 的函數(shù):

          function initializeFriend(data) {
           return {
           lastTenPosts: data.lastTenPosts,
           birthday: data.birthday,
           username: data.username, 
           fullName: `${data.firstName} ${data.lastName}`,
           getThreeRandomPosts: function() {
           // get three random posts from this.lastTenPosts
           },
           getDaysUntilBirthday: function() {
           // use this.birthday to get the num days until birthday
           },
           greeting: function() {
           function getLastPost() {
           return this.lastTenPosts[0]
           }
           const lastPost = getLastPost() 
           return `Hello, this is ${this.fullName}'s data!
           ${this.fullName}'s last post was ${lastPost}.`
           },
           onFriendClick: function() {
           window.open(`https://facebook.com/${this.username}`)
           }
           };
          }
          

          這樣能運(yùn)行嗎?如果不能,怎樣修改才能運(yùn)行?

          答案是不能。因?yàn)?getLastPost 沒(méi)有在對(duì)象的上下文中調(diào)用,因此getLastPost 中的 this 按照默認(rèn)規(guī)則指向了全局對(duì)象。

          你說(shuō)沒(méi)有“在對(duì)象的上下文中調(diào)用”……難道它不是從 initializeFriend 返回的內(nèi)部調(diào)用的嗎?如果這還不叫“在對(duì)象的上下文中調(diào)用”,那我就不知道什么才算了。

          我知道“在對(duì)象的上下文中調(diào)用”這個(gè)術(shù)語(yǔ)很模糊。也許,判斷函數(shù)是否“在對(duì)象的上下文中調(diào)用”的好方法就是檢查一遍函數(shù)的調(diào)用過(guò)程,看看是否有個(gè)對(duì)象“依附”到了函數(shù)上。

          我們來(lái)檢查下執(zhí)行 bobRossObj.onFriendClick() 時(shí)的情況。“給我對(duì)象 bobRossObj,找到其中的 onFriendClick 然后調(diào)用該屬性對(duì)應(yīng)的函數(shù)”。

          我們同樣檢查下執(zhí)行 getLastPost() 時(shí)的情況。“給我名為 getLastPost 的函數(shù)然后執(zhí)行。”看到了嗎?我們根本沒(méi)有提到對(duì)象。

          好了,這里有個(gè)難題來(lái)測(cè)試你的理解程度。假設(shè)有個(gè)函數(shù)名為 functionCaller,它的功能就是調(diào)用一個(gè)函數(shù):

          functionCaller(fn) {
           fn()
          }
          

          如果調(diào)用 functionCaller(bobRossObj.onFriendClick) 會(huì)怎樣?你會(huì)認(rèn)為 onFriendClick 是“在對(duì)象的上下文中調(diào)用”的嗎?this.username有定義嗎?

          我們來(lái)檢查一遍:“給我 bobRosObj 對(duì)象然后查找其屬性 onFriendClick。取出其中的值(這個(gè)值碰巧是個(gè)函數(shù)),然后將它傳遞給 functionCaller,取名為 fn。然后,執(zhí)行名為 fn 的函數(shù)。”注意該函數(shù)在調(diào)用之前已經(jīng)從 bobRossObj 對(duì)象上“脫離”了,因此并不是“在對(duì)象的上下文中調(diào)用”的,所以 this.username 沒(méi)有定義。

          這時(shí)可以用箭頭函數(shù)解決這個(gè)問(wèn)題:

          function initializeFriend(data) {
           return {
           lastTenPosts: data.lastTenPosts,
           birthday: data.birthday,
           username: data.username, 
           fullName: `${data.firstName} ${data.lastName}`,
           getThreeRandomPosts: function() {
           // get three random posts from this.lastTenPosts
           },
           getDaysUntilBirthday: function() {
           // use this.birthday to get the num days until birthday
           },
           greeting: function() {
           const getLastPost = () => {
           return this.lastTenPosts[0]
           }
           const lastPost = getLastPost() 
           return `Hello, this is ${this.fullName}'s data!
           ${this.fullName}'s last post was ${lastPost}.`
           },
           onFriendClick: function() {
           window.open(`https://facebook.com/${this.username}`)
           }
           };
          }
          

          上述代碼的規(guī)則是:

          在定義箭頭函數(shù)時(shí),不管 this 指向誰(shuí),箭頭函數(shù)內(nèi)部的 this 永遠(yuǎn)指向同一個(gè)東西。

          箭頭函數(shù)是在 greeting 中定義的。我們知道,在 greeting 內(nèi)部的 this 指向?qū)ο蟊旧怼R虼耍^函數(shù)內(nèi)部的 this 也指向?qū)ο蟊旧恚@正是我們需要的結(jié)果。

          9.結(jié)論

          this 有時(shí)很不好理解,但它對(duì)于開發(fā) JavaScript 應(yīng)用非常有用。本文當(dāng)然沒(méi)能介紹 this 的所有方面。一些沒(méi)有涉及到的話題包括:

          • call 和 apply;
          • 使用 new 時(shí) this 會(huì)怎樣;
          • 在 ES6 的 class 中 this 會(huì)怎樣。

          我建議你首先問(wèn)問(wèn)自己在這些情況下的 this,然后在瀏覽器中執(zhí)行代碼來(lái)檢驗(yàn)?zāi)愕慕Y(jié)果。

          想學(xué)習(xí)更多關(guān) 于this 的內(nèi)容,可參考《你不知道的 JS:this 和對(duì)象原型》:

          • https://github.com/getify/You-Dont-Know-JS/tree/master/this%20%26%20object%20prototypes

          如果你想測(cè)試自己的知識(shí),可參考《你不知道的JS練習(xí):this和對(duì)象原型》:

          • https://ydkjs-exercises.com/this-object-prototypes

          原文:https://medium.freecodecamp.org/a-deep-dive-into-this-in-javascript-why-its-critical-to-writing-good-code-7dca7eb489e7

          作者:Austin Tackaberry,Human API 的軟件工程師

          譯者:彎月,責(zé)編:屠敏

          TML使用哪個(gè)編輯器好嗎?

          一開始學(xué)前端基礎(chǔ)HTML我們就需要準(zhǔn)備一下,我們需要HTML編輯器來(lái)編寫制作我們的HTML頁(yè)面,寫這個(gè)網(wǎng)頁(yè)HTML的工具,一般常用的工具分兩種:notepad++和Adobe Dreamweaver

          阿景就給你介紹第一個(gè)notepad++編輯器,也是最好用最方便的一個(gè)編輯器:

          分享之前我還是要推薦下我自己的前端學(xué)習(xí)群:661473108,不管你是小白還是大牛,小編都?xì)g迎,不管前端有什么不懂的,或者不知道怎么學(xué)習(xí)的都可以來(lái),歡迎初學(xué)和進(jìn)階中的小伙伴。

          操作步驟:

          1、到百度下載一個(gè)notepad++編輯器軟件,然后在電腦上安裝,安裝完成運(yùn)行notepad++編輯器軟件

          2、打開notepad++,notepad++編輯器會(huì)自動(dòng)新建一個(gè)文檔,如圖:

          圖片

          3、文件另存為的格式是選html的格式,如圖:

          圖片

          圖片

          4、新建成功一個(gè)HTML文件,如圖:(文檔取名例如“阿景前端”)

          圖片

          上圖及步驟已經(jīng)做好了一個(gè)HTML文件,那我們來(lái)測(cè)試一下我們的第一個(gè)頁(yè)面,那么我們就需要填寫代碼內(nèi)容,代碼內(nèi)容如下:

          <!DOCTYPE html>

          <html>

          <head>

          <meta charset="utf-8">

          <title>阿景前端教程</title>

          </head>

          <body>

          <h1>我的第一個(gè)標(biāo)題</h1>

          <p>我的第一個(gè)段落。</p>

          </body>

          </html>

          圖片展示:

          圖片

          圖片

          到了這一步,我們的編輯器選擇下載好了,頁(yè)面也制作成功了,那么本章節(jié)就到這里了!

          本文轉(zhuǎn)載于:http://web.gzseoaj.com/html/2.html


          主站蜘蛛池模板: 亚洲av高清在线观看一区二区| 亚洲AV日韩综合一区| 风间由美性色一区二区三区| 色妞AV永久一区二区国产AV| 爱爱帝国亚洲一区二区三区| 午夜福利一区二区三区在线观看| 中文字幕在线一区二区三区| 日本一区高清视频| 日本一区二区三区免费高清| 色狠狠色狠狠综合一区| 亚洲伦理一区二区| 久久精品一区二区三区四区| 中文字幕一区二区三区在线不卡| 国产成人综合精品一区| 波多野结衣在线观看一区二区三区 | 国产精品免费视频一区| 日本一区二区三区不卡视频| 久久青青草原一区二区| 亚洲国产精品一区二区三区在线观看| 极品人妻少妇一区二区三区| 影音先锋中文无码一区| 国产福利无码一区在线| 无码毛片一区二区三区视频免费播放 | tom影院亚洲国产一区二区| 国产一区二区女内射| 国产丝袜视频一区二区三区| 国产区精品一区二区不卡中文| 亚洲乱码一区二区三区在线观看| 国产精品伦一区二区三级视频 | 亚洲AV乱码一区二区三区林ゆな| 日本在线一区二区| 亚洲一区在线视频| 午夜视频一区二区| 久久一区二区三区免费| 台湾无码一区二区| 国产在线一区二区杨幂| 国产AV午夜精品一区二区三区 | 精品在线视频一区| 国内偷窥一区二区三区视频| 奇米精品视频一区二区三区| 无码精品不卡一区二区三区|