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 99在线播放,日韩a在线播放,精品亚洲午夜久久久久

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          JavaScript中this指代問題

          言:在前端開發中,this簡直是又愛又恨的存在。this的確很強大,可以快速獲取到對象,但往往一不小心,就獲取不到想要的對象。那么this到底怎么使用呢?

          在JavaScript「ES5」中,this的指代和其定義位置無關,只和其調用位置有關

          不同的調用位置則this就代表不同的對象,但始終有個大原則:this指代的永遠是當前對象

          接下來我們一起看看,開發過程中this到底有哪幾種情況呢?

          1、this在普通函數中調用

          this在普通函數中調用,this指代全局對象window

          // 全局變量
          let name = '元歌'
          function demo(){
              // 局部變量
              let name = '孫尚香';
          
              console.log(name);//孫尚香   優先使用局部變量
              console.log(this.name);//元歌  ---此時this指代的是window對象   this.name則相當于獲取window.name的值
          }
          demo()

          2、this在對象內調用

          this指代當前對象,這也是最重要的一種使用方法

          1、普通自定義對象

          let obj = {
              name:'翠花',
              age:18,
              say:function(){
                  // console.log(this==obj)//true
                  // console.log(this===obj)//true
                  console.log(this.name+'今年芳齡:'+this.age)//推薦
              }
          }
          obj.say();

          2、事件調用

          <div id="box" onclick="changeColor(this)"></div>
          function changeColor(obj){
              obj.style.background = 'pink'
          }

          this作為實參傳入函數內,此時this則代表當前觸發事件的元素

          let oLi = document.querySelectorAll'li');
          for(let i=0;i<oLi.length;i++){
          // 函數會優先加載,但是只有在js偵測到點擊時再觸發
              oLi[i].onclick = function(){
                  this.style.background = 'orange'
              }
          }

          this此時代表當前點擊的對象

          3、事件中定時器或forEach等帶回調函數影響

          let li = document.querySelectorAll('li');
          for(let i=0;i<li.length;i++){
            li[i].onclick = function(){
              // 將this賦值給一個變量或者一個對象的屬性,使其能夠在普通函數內使用
              // (行業習慣使用that  _this )
              let that = this;
          
              // 使用定時器,過1秒改變h2的內容  
              //小心在時間內函數的調用,比如:setTimeout setInterval forEach
              setTimeout(function(){
                  console.log(this)//this當前指代的是window,因為再普通函數中調用
                  that.innerHTML = '待陽光明媚,我們出門可好';
              },1000) 
          }
          }

          當然,如果掌握ES6箭頭函數的小伙伴,也可以將其轉換為箭頭函數

          let li = document.querySelectorAll('li');
          for(let i=0;i<li.length;i++){
            li[i].onclick = function(){
              setTimeout(() => {
                  console.log(this)//this當前點擊對象
                  this.innerHTML = '待陽光明媚,我們出門可好';
              },1000) 
          }
          }

          3、this在構造函數中調用,this指代的是實例化的對象

          // 自定義構造函數
          function test(){
              this.name = '張三';
              this.age = 18;
              this.play = function(){
                  console.log(this.name+'說:源碼學習氛圍真好!')
              }
          }
          
          // this在構造函數中被調用時,this指代的是實例化的對象obj
          let message = new test()
          
          console.log(message)//{name: "張三", age: 18}
          console.log(message.name);//張三
          message.play();//張三說:源碼學習氛圍真好

          4、this在apply()、call()、bind()方法中調用

          源:人民日報

          正在舉行的第五屆中國國際進口博覽會,吸引來自127個國家和地區的企業參展,“高精尖”創新產品與“小而美”特色產品共同亮相。各方共同書寫一個個開放合作、共贏發展的故事,生動詮釋了中國以實際行動落實全球發展倡議、推動全球共同發展的大國擔當。

          “為中國消費者提供更豐富的選擇”

          菲律賓的超甜蕉、金菠蘿,比利時的紅啤梨,泰國的香水椰……都樂亞洲控股私人有限公司的展臺上,一個巨大的“水果星球”吸引眾多觀眾駐足。連續5年參展,都樂公司持續把全球優質水果引進中國市場。今年,公司把剛剛引進中國市場的肯尼亞牛油果擺在展臺顯眼位置。

          “當得知肯尼亞鮮食牛油果獲準進入中國市場時,作為進口水果經銷商,我們非常興奮,第一時間與肯尼亞當地農場和包裝廠溝通,探討挖掘肯尼亞牛油果在中國的市場潛力。”都樂公司相關負責人王娜表示,“希望借助進博會強大的溢出效應,為中國消費者提供更豐富的選擇。”

          牛油果是肯尼亞重要的出口農產品。今年8月,4個裝滿牛油果的集裝箱從肯尼亞利穆魯鎮的桑瑞普工廠出發,運往中國的北京、上海、廣州等城市。這是非洲鮮食牛油果首次出口中國。消息傳開后,當地民眾種植牛油果的熱情高漲。肯尼亞牛油果協會首席執行官歐內斯特·穆托米表示:“中國擁有龐大的市場,會讓肯尼亞成千上萬的牛油果種植戶受益。”

          “這幾天,家樂福等知名合作商聞訊而來,對進博會上展出的肯尼亞牛油果非常感興趣。我們正在積極發送樣品,測試貨架期。如果順利,后續的銷量預計會非常可觀。”王娜說。

          從今年1月中肯簽署肯尼亞鮮食鱷梨(牛油果)輸華議定書,到6月中國海關總署允許符合檢疫要求的肯尼亞鮮食牛油果出口至中國;從8月鮮食牛油果從肯尼亞發往中國,到肯尼亞牛油果在本屆進博會上成功展出……肯尼亞牛油果的進博之旅,成為中國堅定不移擴大對外開放,實現互利共贏的生動體現。

          “在中國市場發現更多發展機遇”

          為支持最不發達國家參展,歷屆進博會都為最不發達國家企業提供免費攤位,以更好幫助這些國家推廣當地特色食品、傳統工藝和旅游文化。今年,來自最不發達國家的企業簽約使用免費攤位數量比上屆進博會增加近一倍。

          來自幾內亞比紹的腰果今年首次在進博會上展出。盡管沒有精美的包裝,擺在展臺上的一袋袋飽滿的腰果還是吸引了不少客商詢問。

          腰果出口是幾內亞比紹大部分農民的主要收入來源。“農業合作可以為當地民眾帶來實實在在的好處。我們希望借助進博會平臺,幫助當地農戶推銷土特產。如果幾內亞比紹的腰果能夠直接出口中國,當地民眾的收入預計將大幅提高。”幾內亞比紹中國貿易商會副會長吳詠濤說。

          幾內亞比紹駐華大使安東尼奧·塞里弗·恩巴洛在接受記者采訪時表示,進博會提供了一個很好的機會,讓幾內亞比紹可以展示腰果這一主要出口產品。我們希望借此吸引更多投資者,幫助當地民眾增加就業,并實現技術更新和產業升級。

          同樣是首次參加進博會,全巴基斯坦商業出口商協會參展商的名片上寫著這樣一句話:“期望此次巴基斯坦展區不僅能促進兩國經濟發展、貿易往來,更成為兩國友好關系的見證。”祖母綠寶石、喜馬拉雅鹽、巴斯馬蒂大米……手掌大小的宣傳冊上,對這些產品的介紹別具特色。

          全巴基斯坦商業出口商協會參展商負責人繆嵐告訴記者,申請到展位后,他們第一時間聯系了巴基斯坦駐華使領館,請其推薦巴基斯坦的特色產品。“希望巴基斯坦企業能夠通過進博會在中國市場發現更多發展機遇。”

          “帶動大家一起致富”

          與進博會舉辦地國家會展中心(上海)僅一條馬路之隔,坐落著2018年設立的進博會常年交易服務平臺——綠地全球商品貿易港。在貿易港二樓,有一家阿富汗進口商品館,主要銷售阿富汗手工羊毛地毯。店主名叫阿里·法伊茲,來自阿富汗首都喀布爾。

          今年是阿里連續第三年參加進博會,他帶來了阿富汗的松子、葡萄干、石榴、藏紅花等特色產品。除在消費品展區有展位外,他還在食品及農業展區申請了展位,展位面積越來越大,聘用的員工也從去年的5人增加到了今年的11人。

          接受采訪期間,阿里頻繁接到洽談生意的電話,不時有觀眾前來詢問羊毛地毯的價格。“有一位客戶看了有關我們的報道,第一時間就來買走了最大的一塊地毯。”阿里說,這塊地毯的銷售所得幾乎相當于四五個阿富汗地毯編織工人家庭一年的總開銷。

          阿里的展臺上今年還多了兩個十分顯眼的透明櫥窗,里面展示著精美的傳統工藝品。這是阿里從阿富汗僅有的一家青金石盤工廠收來的。“這些阿富汗傳統工藝品很珍貴,工廠主卻無法找到好的銷路。得知我可以把產品帶到中國,這位工廠主滿懷期待地把這些傳統工藝品交給了我。”阿里說。

          與阿里一樣借助進博會平臺幫助本國民眾增收的,還有來自尼泊爾的參展商弗蘭克。2020年首次參加進博會,弗蘭克就看到了中國市場的廣闊商機。“我以前去過很多國家參展。參加進博會后,我就不必東奔西跑推銷產品了,這里可以聯系到很多客戶和生產廠家,帶動大家一起致富。”

          第四屆進博會后,弗蘭克在綠地全球商品貿易港開了自己的店。弗蘭克介紹,他的企業與尼泊爾當地的一家手工編織廠合作,雇用了600多名女工,工人月收入可折合3000多元人民幣。“我們希望把更多尼泊爾產品帶到中國,幫助更多尼泊爾民眾增加收入。”

          進博會日益讓中國市場成為世界的市場、共享的市場、大家的市場。正是因為有了進博會,阿里和弗蘭克的生意越來越好,帶動本國更多民眾共創美好生活。

          《 人民日報 》( 2022年11月10日 第 03 版)

          、日期處理

          1. 檢查日期是否有效

          該方法用于檢測給出的日期是否有效:

          const isDateValid = (...val) => !Number.isNaN(new Date(...val).valueOf());
          
          isDateValid("December 17, 1995 03:24:00");  // true
          復制代碼

          2. 計算兩個日期之間的間隔

          該方法用于計算兩個日期之間的間隔時間:

          const dayDif = (date1, date2) => Math.ceil(Math.abs(date1.getTime() - date2.getTime()) / 86400000)
              
          dayDif(new Date("2021-11-3"), new Date("2022-2-1"))  // 90
          復制代碼

          距離過年還有90天~

          3. 查找日期位于一年中的第幾天

          該方法用于檢測給出的日期位于今年的第幾天:

          const dayOfYear = (date) => Math.floor((date - new Date(date.getFullYear(), 0, 0)) / 1000 / 60 / 60 / 24);
          
          dayOfYear(new Date());   // 307
          復制代碼

          2021年已經過去300多天了~

          4. 時間格式化

          該方法可以用于將時間轉化為hour:minutes:seconds的格式:

          const timeFromDate = date => date.toTimeString().slice(0, 8);
              
          timeFromDate(new Date(2021, 11, 2, 12, 30, 0));  // 12:30:00
          timeFromDate(new Date());  // 返回當前時間 09:00:00
          復制代碼

          二、字符串處理

          1. 字符串首字母大寫

          該方法用于將英文字符串的首字母大寫處理:

          const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1)
          
          capitalize("hello world")  // Hello world
          復制代碼

          2. 翻轉字符串

          該方法用于將一個字符串進行翻轉操作,返回翻轉后的字符串:

          const reverse = str => str.split('').reverse().join('');
          
          reverse('hello world');   // 'dlrow olleh'
          復制代碼

          3. 隨機字符串

          該方法用于生成一個隨機的字符串:

          const randomString = () => Math.random().toString(36).slice(2);
          
          randomString();
          復制代碼

          4. 截斷字符串

          該方法可以從指定長度處截斷字符串:

          const truncateString = (string, length) => string.length < length ? string : `${string.slice(0, length - 3)}...`;
          
          truncateString('Hi, I should be truncated because I am too loooong!', 36)   // 'Hi, I should be truncated because...'
          復制代碼

          5. 去除字符串中的HTML

          該方法用于去除字符串中的HTML元素:

          const stripHtml = html => (new DOMParser().parseFromString(html, 'text/html')).body.textContent || '';
          復制代碼

          三、數組處理

          1. 從數組中移除重復項

          該方法用于移除數組中的重復項:

          const removeDuplicates = (arr) => [...new Set(arr)];
          
          console.log(removeDuplicates([1, 2, 2, 3, 3, 4, 4, 5, 5, 6]));
          復制代碼

          2. 判斷數組是否為空

          該方法用于判斷一個數組是否為空數組,它將返回一個布爾值:

          const isNotEmpty = arr => Array.isArray(arr) && arr.length > 0;
          
          isNotEmpty([1, 2, 3]);  // true
          復制代碼

          3. 合并兩個數組

          可以使用下面兩個方法來合并兩個數組:

          const merge = (a, b) => a.concat(b);
          
          const merge = (a, b) => [...a, ...b];
          復制代碼

          四、數字操作

          1. 判斷一個數是奇數還是偶數

          該方法用于判斷一個數字是奇數還是偶數:

          const isEven = num => num % 2 === 0;
          
          isEven(996); 
          復制代碼

          2. 獲得一組數的平均值

          const average = (...args) => args.reduce((a, b) => a + b) / args.length;
          
          average(1, 2, 3, 4, 5);   // 3
          復制代碼

          3. 獲取兩個整數之間的隨機整數

          該方法用于獲取兩個整數之間的隨機整數

          const random = (min, max) => Math.floor(Math.random() * (max - min + 1) + min);
          
          random(1, 50);
          復制代碼

          4. 指定位數四舍五入

          該方法用于將一個數字按照指定位進行四舍五入:

          const round = (n, d) => Number(Math.round(n + "e" + d) + "e-" + d)
          
          round(1.005, 2) //1.01
          round(1.555, 2) //1.56
          復制代碼

          五、顏色操作

          1. 將RGB轉化為十六機制

          該方法可以將一個RGB的顏色值轉化為16進制值:

          const rgbToHex = (r, g, b) => "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
          
          rgbToHex(255, 255, 255);  // '#ffffff'
          復制代碼

          2. 獲取隨機十六進制顏色

          該方法用于獲取一個隨機的十六進制顏色值:

          const randomHex = () => `#${Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, "0")}`;
          
          randomHex();
          復制代碼

          六、瀏覽器操作

          1. 復制內容到剪切板

          該方法使用 navigator.clipboard.writeText 來實現將文本復制到剪貼板:

          const copyToClipboard = (text) => navigator.clipboard.writeText(text);
          
          copyToClipboard("Hello World");
          復制代碼

          2. 清除所有cookie

          該方法可以通過使用 document.cookie 來訪問 cookie 并清除存儲在網頁中的所有 cookie:

          const clearCookies = document.cookie.split(';').forEach(cookie => document.cookie = cookie.replace(/^ +/, '').replace(/=.*/, `=;expires=${new Date(0).toUTCString()};path=/`));
          復制代碼

          3. 獲取選中的文本

          該方法通過內置的 getSelection 屬性獲取用戶選擇的文本:

          const getSelectedText = () => window.getSelection().toString();
          
          getSelectedText();
          復制代碼

          4. 檢測是否是黑暗模式

          該方法用于檢測當前的環境是否是黑暗模式,它是一個布爾值:

          const isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
          
          console.log(isDarkMode)
          復制代碼

          5. 滾動到頁面頂部

          該方法用于在頁面中返回頂部:

          const goToTop = () => window.scrollTo(0, 0);
          
          goToTop();
          復制代碼

          6. 判斷當前標簽頁是否激活

          該方法用于檢測當前標簽頁是否已經激活:

          const isTabInView = () => !document.hidden; 
          復制代碼

          7. 判斷當前是否是蘋果設備

          該方法用于檢測當前的設備是否是蘋果的設備:

          const isAppleDevice = () => /Mac|iPod|iPhone|iPad/.test(navigator.platform);
          
          isAppleDevice();
          復制代碼

          8. 是否滾動到頁面底部

          該方法用于判斷頁面是否已經底部:

          const scrolledToBottom = () => document.documentElement.clientHeight + window.scrollY >= document.documentElement.scrollHeight;
          復制代碼

          9. 重定向到一個URL

          該方法用于重定向到一個新的URL:

          const redirect = url => location.href = url
          
          redirect("https://www.google.com/")
          復制代碼

          10. 打開瀏覽器打印框

          該方法用于打開瀏覽器的打印框:

          const showPrintDialog = () => window.print()
          復制代碼

          七、其他操作

          1. 隨機布爾值

          該方法可以返回一個隨機的布爾值,使用Math.random()可以獲得0-1的隨機數,與0.5進行比較,就有一半的概率獲得真值或者假值。

          const randomBoolean = () => Math.random() >= 0.5;
          
          randomBoolean();
          復制代碼

          2. 變量交換

          可以使用以下形式在不適用第三個變量的情況下,交換兩個變量的值:

          [foo, bar] = [bar, foo];
          復制代碼

          3. 獲取變量的類型

          該方法用于獲取一個變量的類型:

          const trueTypeOf = (obj) => Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
          
          trueTypeOf('');     // string
          trueTypeOf(0);      // number
          trueTypeOf();       // undefined
          trueTypeOf(null);   // null
          trueTypeOf({});     // object
          trueTypeOf([]);     // array
          trueTypeOf(0);      // number
          trueTypeOf(() => {});  // function
          復制代碼

          4. 華氏度和攝氏度之間的轉化

          該方法用于攝氏度和華氏度之間的轉化:

          const celsiusToFahrenheit = (celsius) => celsius * 9/5 + 32;
          const fahrenheitToCelsius = (fahrenheit) => (fahrenheit - 32) * 5/9;
          
          celsiusToFahrenheit(15);    // 59
          celsiusToFahrenheit(0);     // 32
          celsiusToFahrenheit(-20);   // -4
          fahrenheitToCelsius(59);    // 15
          fahrenheitToCelsius(32);    // 0
          復制代碼

          5. 檢測對象是否為空

          該方法用于檢測一個JavaScript對象是否為空:

          const isEmpty = obj => Reflect.ownKeys(obj).length === 0 && obj.constructor === Object;

          主站蜘蛛池模板: 亚洲一区二区三区四区在线观看| 亚洲视频在线一区二区| 夜精品a一区二区三区| 在线日韩麻豆一区| 日韩在线不卡免费视频一区 | 亚洲影视一区二区| 内射白浆一区二区在线观看| 一区二区三区视频在线| 国产伦精品一区二区三区四区| 久久青草国产精品一区| 国产精品亚洲一区二区三区在线观看 | 亚洲一区二区三区国产精品无码| 日韩一区二区三区不卡视频| 国产一区二区在线看| 日韩精品无码久久一区二区三| 亚洲一本一道一区二区三区 | 中字幕一区二区三区乱码| 国产伦一区二区三区高清| 精品国产一区二区三区www| 亚洲一区AV无码少妇电影| 无码毛片视频一区二区本码| 精品久久久久一区二区三区| 无码国产精品一区二区高潮| 日本一区二区三区在线观看视频| 亚洲一区二区久久| 无码中文字幕乱码一区 | 国产一区在线播放| 丰满岳妇乱一区二区三区| 久久久国产一区二区三区| 中文国产成人精品久久一区| 国产色精品vr一区区三区| 手机看片福利一区二区三区| 国产不卡视频一区二区三区| 99久久精品国产免看国产一区| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 国产韩国精品一区二区三区| 国产福利电影一区二区三区久久老子无码午夜伦不 | 日韩精品久久一区二区三区 | 一区二区三区四区在线视频| 中文字幕亚洲一区二区va在线| 香蕉久久一区二区不卡无毒影院|