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 青青草原国产一区二区,久久精品视频免费播放,久久精品视频9

          整合營銷服務(wù)商

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

          免費咨詢熱線:

          IT之家學(xué)院:使用注冊表手動恢復(fù)被篡改的默認瀏覽器

          IT之家學(xué)院:使用注冊表手動恢復(fù)被篡改的默認瀏覽器

          謝IT之家網(wǎng)友 ytmountain的原創(chuàng)投稿

          國內(nèi)軟件的使用環(huán)境大家想必深有體會,特別是在競爭激烈的瀏覽器市場,各路牛鬼蛇神都想霸占用戶的電腦。

          更改默認瀏覽器有很多種方法,今天為大家介紹一下使用注冊表編輯器手動改回默認瀏覽器的方法,當然也可以使用各種工具軟件。

          環(huán)境介紹:Windows 10專業(yè)版15063.483

          操作步驟:

          1、打開注冊表編輯器(regedit.msc)

          2、定位到以下子項:

          \HKEY_CURRENT_USER\Software\Classes

          3、在Classes下找到.htm/.html,這時你會看到所使用的默認瀏覽器,如圖:

          4、我的電腦使用的是firefox,所以此處顯示為FirefoxHTML。如果改為系統(tǒng)默認,只需雙擊鍵值并輸入Htmlfile即可。

          81.在JavaScript中創(chuàng)建一個真正的private方法有什么缺點?

          參考答案:每一個對象都會創(chuàng)建一個private方法的方法,這樣很耗費內(nèi)存

          觀察下面代碼

          var Employee=function(name, company, salary) {
              this.name=name || "";
              this.company=company || "";
              this.salary=salary || 5000;
          
              // Private method
              var increaseSalary=function() {
                  this.salary=this.salary + 1000;
              };
          
              // Public method
              this.dispalyIncreasedSalary=function() {
                  increaseSlary();
                  console.log(this.salary);
              };
          };
          
          // Create Employee class object
          var emp1=new Employee("John", "Pluto", 3000);
          // Create Employee class object
          var emp2=new Employee("Merry", "Pluto", 2000);
          // Create Employee class object
          var emp3=new Employee("Ren", "Pluto", 2500);

          在這里 emp1, emp2, emp3都有一個increaseSalary私有方法的副本。

          所以我們除非必要,非常不推薦使用私有方法。


          182.JavaScript怎么清空數(shù)組?

          參考答案:

          方法1

          arrayList=[];

          直接改變arrayList所指向的對象,原對象并不改變。

          方法2

          arrayList.length=0;

          這種方法通過設(shè)置length=0 使原數(shù)組清除元素。

          方法3

          arrayList.splice(0, arrayList.length);


          183.怎么判斷一個object是否是數(shù)組(array)?

          參考答案:

          方法1

          使用 Object.prototype.toString 來判斷是否是數(shù)組

          function isArray(obj){

          return Object.prototype.toString.call( obj )==='[object Array]';
          

          }

          這里使用call來使 toString 中 this 指向 obj。進而完成判斷

          方法二

          使用 原型鏈 來完成判斷

          function isArray(obj){

          return obj.__proto__===Array.prototype;
          

          }

          基本思想是利用 實例如果是某個構(gòu)造函數(shù)構(gòu)造出來的那么 它的 __proto__是指向構(gòu)造函數(shù)的 prototype屬性。

          方法3

          利用JQuery

          function isArray(obj){

          return $.isArray(obj)
          

          }

          JQuery isArray 的實現(xiàn)其實就是方法1


          184.什么是 undefined x 1 ?

          在chrome下執(zhí)行如下代碼,我們就可以看到undefined x 1的身影。

          參考答案:

          var trees=["redwood", "bay", "cedar", "oak", "maple"];
          delete trees[3];
          console.log(trees);

          當我們使用 delete 操作符刪除一個數(shù)組中的元素,這個元素的位置就會變成一個占位符。打印出來就是undefined x 1。 注意如果我們使用trees[3]==='undefined × 1'返回的是 false。因為它僅僅是一種打印表示,并不是值變?yōu)閡ndefined x 1。


          185.兩種函數(shù)聲明有什么區(qū)別?

          var foo=function() {
              // Some code
          };
          
          function bar() {
              // Some code
          };

          參考答案:

          foo的定義是在運行時。想系統(tǒng)說明這個問題,我們要引入變量提升的這一概念。

          我們可以運行下如下代碼看看結(jié)果。

          console.log(foo)
          console.log(bar)
          
          var foo=function() {
              // Some code
          };
          
          function bar() {
              // Some code
          };

          輸出為

          
          undefined
          function bar(){ 
              // Some code
          }; 
          

          為什么那?為什么 foo 打印出來是 undefined,而 bar打印出來卻是函數(shù)?

          JavaScript在執(zhí)行時,會將變量提升。

          所以上面代碼JavaScript 引擎在實際執(zhí)行時按這個順序執(zhí)行。

          // foo bar的定義位置被提升
          function bar() {
              // Some code
          };
          var foo;
          
          console.log(foo)
          console.log(bar)
          
          foo=function() {
              // Some code
          };


          186.什么是跨域?跨域請求資源的方法有哪些?

          參考答案:

          
          (1)、porxy代理
          定義和用法:proxy代理用于將請求發(fā)送給后臺服務(wù)器,通過服務(wù)器來發(fā)送請求,然后將請求的結(jié)果傳遞給前端。
          實現(xiàn)方法:通過nginx代理;
          注意點:1、如果你代理的是https協(xié)議的請求,那么你的proxy首先需要信任該證書(尤其是自定義證書)或者忽略證書檢查,否則你的請求無法成功。
          (2)、CORS 【Cross-Origin Resource Sharing】
          定義和用法:是現(xiàn)代瀏覽器支持跨域資源請求的一種最常用的方式。
          使用方法:一般需要后端人員在處理請求數(shù)據(jù)的時候,添加允許跨域的相關(guān)操作。如下:
          res.writeHead(200, {
              "Content-Type": "text/html; charset=UTF-8",
              "Access-Control-Allow-Origin":'http://localhost',
              'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
              'Access-Control-Allow-Headers': 'X-Requested-With, Content-Type'
          });
          (3)、jsonp
          定義和用法:通過動態(tài)插入一個script標簽。瀏覽器對script的資源引用沒有同源限制,同時資源加載到頁面后會立即執(zhí)行(沒有阻塞的情況下)。
          特點:通過情況下,通過動態(tài)創(chuàng)建script來讀取他域的動態(tài)資源,獲取的數(shù)據(jù)一般為json格式。
          實例如下:
          <script>
              function testjsonp(data) {
                 console.log(data.name); // 獲取返回的結(jié)果
              }
          </script>
          <script>
              var _script=document.createElement('script');
              _script.type="text/javascript";
              _script.src="http://localhost:8888/jsonp?callback=testjsonp";
              document.head.appendChild(_script);
          </script>
          缺點:
            1、這種方式無法發(fā)送post請求(這里)
            2、另外要確定jsonp的請求是否失敗并不容易,大多數(shù)框架的實現(xiàn)都是結(jié)合超時時間來判定。
          


          187.談?wù)劺厥諜C制方式及內(nèi)存管理

          參考答案:

          
          回收機制方式
          1、定義和用法:垃圾回收機制(GC:Garbage Collection),執(zhí)行環(huán)境負責(zé)管理代碼執(zhí)行過程中使用的內(nèi)存。
          2、原理:垃圾收集器會定期(周期性)找出那些不在繼續(xù)使用的變量,然后釋放其內(nèi)存。但是這個過程不是實時的,因為其開銷比較大,所以垃圾回收器會按照固定的時間間隔周期性的執(zhí)行。
          3、實例如下:
          function fn1() {
              var obj={name: 'hanzichi', age: 10};
          }
          function fn2() {
              var obj={name:'hanzichi', age: 10};
             return obj;
          }
          var a=fn1();
          var b=fn2();
          fn1中定義的obj為局部變量,而當調(diào)用結(jié)束后,出了fn1的環(huán)境,那么該塊內(nèi)存會被js引擎中的垃圾回收器自動釋放;在fn2被調(diào)用的過程中,返回的對象被全局變量b所指向,所以該塊內(nèi)存并不會被釋放。
           4、垃圾回收策略:標記清除(較為常用)和引用計數(shù)。
          標記清除:
            定義和用法:當變量進入環(huán)境時,將變量標記"進入環(huán)境",當變量離開環(huán)境時,標記為:"離開環(huán)境"。某一個時刻,垃圾回收器會過濾掉環(huán)境中的變量,以及被環(huán)境變量引用的變量,剩下的就是被視為準備回收的變量。
            到目前為止,IE、Firefox、Opera、Chrome、Safari的js實現(xiàn)使用的都是標記清除的垃圾回收策略或類似的策略,只不過垃圾收集的時間間隔互不相同。
          引用計數(shù):
            定義和用法:引用計數(shù)是跟蹤記錄每個值被引用的次數(shù)。
            基本原理:就是變量的引用次數(shù),被引用一次則加1,當這個引用計數(shù)為0時,被視為準備回收的對象。
          


          188.內(nèi)存管理

          參考答案:

          
          1、什么時候觸發(fā)垃圾回收?
          垃圾回收器周期性運行,如果分配的內(nèi)存非常多,那么回收工作也會很艱巨,確定垃圾回收時間間隔就變成了一個值得思考的問題。
          IE6的垃圾回收是根據(jù)內(nèi)存分配量運行的,當環(huán)境中的變量,對象,字符串達到一定數(shù)量時觸發(fā)垃圾回收。垃圾回收器一直處于工作狀態(tài),嚴重影響瀏覽器性能。
          IE7中,垃圾回收器會根據(jù)內(nèi)存分配量與程序占用內(nèi)存的比例進行動態(tài)調(diào)整,開始回收工作。
          2、合理的GC方案:(1)、遍歷所有可訪問的對象; (2)、回收已不可訪問的對象。
          3、GC缺陷:(1)、停止響應(yīng)其他操作;
          4、GC優(yōu)化策略:(1)、分代回收(Generation GC);(2)、增量GC
          


          189.開發(fā)過程中遇到的內(nèi)存泄露情況,如何解決的?

          參考答案:

          
          1、定義和用法:
          內(nèi)存泄露是指一塊被分配的內(nèi)存既不能使用,又不能回收,直到瀏覽器進程結(jié)束。C#和Java等語言采用了自動垃圾回收方法管理內(nèi)存,幾乎不會發(fā)生內(nèi)存泄露。我們知道,瀏覽器中也是采用自動垃圾回收方法管理內(nèi)存,但由于瀏覽器垃圾回收方法有bug,會產(chǎn)生內(nèi)存泄露。
          2、內(nèi)存泄露的幾種情況:
          (1)、當頁面中元素被移除或替換時,若元素綁定的事件仍沒被移除,在IE中不會作出恰當處理,此時要先手工移除事件,不然會存在內(nèi)存泄露。
          實例如下:
          <div id="myDiv">
              <input type="button" value="Click me" id="myBtn">
          </div>
          <script type="text/javascript">
              var btn=document.getElementById("myBtn");
              btn.onclick=function(){
                  document.getElementById("myDiv").innerHTML="Processing...";
              }
          </script>
          解決方法如下:
          <div id="myDiv">
              <input type="button" value="Click me" id="myBtn">
          </div>
          <script type="text/javascript">
              var btn=document.getElementById("myBtn");
              btn.onclick=function(){
              btn.onclick=null;
                  document.getElementById("myDiv").innerHTML="Processing...";
              }
          </script>
          (2)、由于是函數(shù)內(nèi)定義函數(shù),并且內(nèi)部函數(shù)--事件回調(diào)的引用外暴了,形成了閉包。閉包可以維持函數(shù)內(nèi)局部變量,使其得不到釋放。
          實例如下:
          function bindEvent(){
              var obj=document.createElement("XXX");
              obj.onclick=function(){
                  //Even if it's a empty function
              }
          }
          解決方法如下:
          
          function bindEvent(){
              var obj=document.createElement("XXX");
              obj.onclick=function(){
                   //Even if it's a empty function
              }
              obj=null;
          }
          


          190.IE與標準瀏覽器對事件處理的區(qū)別?

          參考答案:

          
          1.監(jiān)聽
          標準
          element.addEventListener('click',observer, useCapture);
          element.removeEventListener('click',observer, useCapture);
          IE
          element.attachEvent('onclick',observer);
          element.detachEvent('onclick',observer);
          2.阻止冒泡
          標準
          event.stopPropagation();
          IE
          event.cancelBubble=true;
          3.阻止默認
          標準
          event.preventDefault();
          IE
          event.returnValue=false;
          4.event
          標準
          event
          IE8以下
          window.event
          5.觸發(fā)當前事件的源對象
          event.target  //Firefox,Chrome
          event.srcElement   //IE,Chrome
          


          191.delete用法

          參考答案:

          
          用于對象屬性的刪除
          var obj={
              name: 'Lily'
          };
          delete obj.name;
          obj.name   //undefined
          不能刪除變量、原型中的變量、函數(shù)
          


          192.如何刪除一個cookie

          參考答案:

          
          1.將時間設(shè)為當前時間往前一點。
          
          var date=newDate();
          
          date.setDate(date.getDate() - 1);//真正的刪除
          
          setDate()方法用于設(shè)置一個月的某一天。
          
          2.expires的設(shè)置
          
          document.cookie='user='+ encodeURIComponent('name')  + ';expires=' + newDate(0)
          


          193.用正則把yya yyb yyc變成yya5 yyb6 yyc7?

          參考答案:

          j=5;
          str.replace(/\w+/g, function(m) {
              return m + j++;
          });
          // function的第一參數(shù)代表匹配正則的字符串,第二個代表第一個子表達式匹配的字符串,第三個代表第二個子表達式匹配的字符串。


          194.怎么判斷兩個json對象的內(nèi)容相等?

          參考答案:

          obj={
              a: 1,
              b: 2
          }
          obj2={
              a: 1,
              b: 2
          }
          obj3={
              a: 1,
              b: 2
          }
          JSON.stringify(obj)==JSON.stringify(obj2); //true
          JSON.stringify(obj)==JSON.stringify(obj3); //false


          195.獲取一個月有多少天

          今天遇到一個需求,已知月份,得到這個月的第一天和最后一天作為查詢條件查范圍內(nèi)的數(shù)據(jù)

          new Date(year, month, date, hrs, min, sec),new Date 可以接受這些參數(shù)創(chuàng)建一個時間對象 其中當我們把 date 設(shè)置為 0 的時候,可以直接通過 getDate() 獲取到最后一天的日期然后得到我們要的最后一天

          參考答案:

          new Date(2019, 12, 0).getDate(); // 31
          new Date(2018, 2, 0).getDate(); // 28
          // 根據(jù)這個我們可以得到一個方法
          function getMonthLength(month) {
              const date=new Date(month);
              const year=date.getFullYear();
              // 月份是從 0 開始計算的
              const _month=date.getMonth() + 1;
              return new Date(year, _month, 0).getDate();
          }


          196.關(guān)于函數(shù)的 length 屬性

          參考答案:

          (()=> 1).length===0; // 輸出true

          解析:

          函數(shù)是有 length 屬性的,函數(shù)的 length 屬性就是函數(shù)參數(shù)的個數(shù),函數(shù)的參數(shù)就是 arguments,而 arguments 也是一個類數(shù)組對象所以他是有 length 屬性的


          197.數(shù)組中字符串鍵值的處理

          在 JavaScript 中數(shù)組是通過數(shù)字進行索引,但是有趣的是他們也是對象,所以也可以包含 字符串 鍵值和屬性,但是這些不會被計算在數(shù)組的長度(length)內(nèi)

          如果字符串鍵值能夠被強制類型轉(zhuǎn)換為十進制數(shù)字的話,它就會被當做數(shù)字索引來處理

          參考答案:

          const arr=[];
          arr[0]=1;
          arr['1']='嘿嘿';
          arr['cym']='cym';
          console.log(arr); // [1, '嘿嘿', cym: 'cym']
          console.log(arr.length); // 2


          198.什么是鏈表?

          答案:鏈表是一種物理存儲單元上非連續(xù)、非順序的存儲結(jié)構(gòu)。鏈表由一系列結(jié)點組成,結(jié)點可以在運行時動態(tài)生成。每個結(jié)點包括兩個部分:一個是存儲數(shù)據(jù)元素的數(shù)據(jù)域,另一個是存儲下一個結(jié)點地址的指針域。


          199.鏈表的基本特征

          參考答案:

          • 每個元素除了存儲數(shù)據(jù),需要有額外的內(nèi)存存儲一個引用(地址),來指向下一個元素;
          • 每個元素占用的內(nèi)存空間并不要求是連續(xù)的;
          • 往往使用鏈表的第一個節(jié)點(根節(jié)點)來代表整個鏈表;
          • 長度是可變的,隨時可以增加和刪除元素;
          • 插入和刪除元素的效率極高;
          • 由于要存儲下一個元素的地址,會增加額外的內(nèi)存開銷;
          • 通過下標查詢鏈表中的某個節(jié)點,效率很低,因此鏈表的下標遍歷效率低。

          bject.fromEntries

          Object.fromEntries() 方法把鍵值對列表轉(zhuǎn)換為一個對象。

          參考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries

          代碼案例


          主站蜘蛛池模板: 国产一区在线视频观看| 中文字幕一区二区三| 国产在线观看91精品一区| 久久综合精品不卡一区二区| 无码人妻一区二区三区免费| 亚洲无删减国产精品一区| 无码人妻一区二区三区免费视频 | 精品一区二区三区在线观看l | 国产亚洲情侣一区二区无码AV| 人妻无码一区二区三区AV| 精品一区二区三区影院在线午夜| 午夜影视日本亚洲欧洲精品一区| 亚洲性日韩精品国产一区二区| 国产在线一区观看| 国产激情一区二区三区小说| 亚洲一区二区三区无码国产| 色老头在线一区二区三区| 日韩精品成人一区二区三区| 成人区精品人妻一区二区不卡| 插我一区二区在线观看| 狠狠做深爱婷婷综合一区| 天天看高清无码一区二区三区 | 久久久国产精品无码一区二区三区 | 在线不卡一区二区三区日韩| 亚洲天堂一区在线| 日韩一区二区超清视频| 高清一区高清二区视频| 美女视频一区三区网站在线观看| 国产伦精品一区二区三区免.费| 麻豆亚洲av熟女国产一区二 | 色窝窝免费一区二区三区| 亚洲熟妇av一区| 一区二区3区免费视频| 国产精品自拍一区| 无码精品国产一区二区三区免费| 亚洲福利一区二区三区| 国产一区二区三区免费在线观看 | 亚洲av区一区二区三| 国产激情无码一区二区| 一区二区三区视频网站| 免费精品一区二区三区在线观看|