<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 1. Q: 解釋下 JavaScript 中 `this` 是如何工作的。 A: `this` 在 JavaScript 中主要由以下五種使用場景。 * 作為函數調用,`this` 綁定全局對象,瀏覽器環境全局對象為 window 。 * 內部函數內部函數的 `this` 也綁定全局對象,應該綁定到其外層函數對應的對象上,這是 JavaScript的缺陷,用`that`替換。 * 作為構造函數使用,`this` 綁定到新創建的對象。 * 作為對象方法使用,`this` 綁定到該對象。 * 使用`apply`或`call`調用 `this` 將會被顯式設置為函數調用的第一個參數。 參考閱讀: [深入淺出 JavaScript 中的 this](http://www.ibm.com/developerworks/cn/web/1207_wangqf_jsthis/#ibm-pcon) [this 的工作原理](http://bonsaiden.github.io/JavaScript-Garden/zh/#function.this) ### 2. Q: 描述以下變量的區別:`null`,`undefined` 或 `undeclared`? * 該如何檢測它們? A: `undefined`是Js語言類型,而`undeclared`是一種Js語法錯誤。在JavaScript中,有兩個表示‘空’的值`undefined`和`null`,`undefined`是一個值為`undefined` 的類型。JavaScript語言也定義了一個全局變量,它的值是 `undefined`,這個變量也被稱為`undefined`。 但是這個變量不是一個常量,也不是一個關鍵字。這意味著它的值可以輕易被覆蓋。為了避免可能對`undefined`值的改變,一個常用的技巧是使用一個傳遞到匿名包裝器的額外參數。在調用時,這個參數不會獲取任何值。如下例子: ~~~ var undefined = 123; (function(something, foo, undefined) { // 局部作用域里的 undefined 變量重新獲得了 `undefined` 值 })('Hello World', 42); ~~~ ### 3. Q:請指出 JavaScript 宿主對象和原生對象的區別? A: 宿主對象是指DOM和BOM。原生對象是Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、Math等對象。 ### 4.Q:請盡可能詳盡的解釋 AJAX 的工作原理。 Ajax 全稱為 Asynchronous JavaScript and XML(異步 JavaScript 和 XML),是一種創建交互式網頁應用的網頁開發技術。 Ajax 的原理簡單來說通過 XmlHttpRequest 對象來向服務器發異步請求,從服務器獲得數據,然后用 JavaScript來操作 DOM 而更新頁面。這其中最關鍵的一步就是從服務器獲得請求數據。 以往我們瀏覽網頁的原理是由 Client 向 Server 提交頁面申請,再由 Server 將申請通過 HTTP 傳回給 Client 生成瀏覽頁面: 使用 Ajax 后的工作原理如下圖,可見通過 Ajax 在用戶交互方面有了很大改進,用戶可以不用為提交了 Form 而長時間等待服務器應答,而且通過 Ajax 也可以開發出華麗的 Web 交互頁面。 ### 5.Q:`==` 和 `===` 有什么不同? A: `==`(相等運算法),`===`(嚴格相等運算符) JavaScript 對象的比較是引用的比較,非值的比較,對象和其本身相等,和其他任何對象不相等。 `===` 首先計算其操作數的值,然后比較,比較過程無任何類型轉換。 `==` 如果兩個操作數不是同一類型的,則相等運算符進行一些類型轉換進行比較。 ### 6.Q:請說出你可以傳遞給 jQuery 方法的四種不同值。 選擇器(字符串),HTML(字符串),回調函數,HTML元素,對象,數組,元素數組,jQuery對象等。 ### 7.Q:XMLHttpRequest通用屬性和方法 1. `readyState`:表示請求狀態的整數,取值: * UNSENT(0):對象已創建 * OPENED(1):open()成功調用,在這個狀態下,可以為xhr設置請求頭,或者使用send()發送請求 * HEADERS\_RECEIVED(2):所有重定向已經自動完成訪問,并且最終響應的HTTP頭已經收到 * LOADING(3):響應體正在接收 * DONE(4):數據傳輸完成或者傳輸產生錯誤 3. `onreadystatechange`:readyState改變時調用的函數 4. `status`:服務器返回的HTTP狀態碼(如,200, 404) 5. `statusText`:服務器返回的HTTP狀態信息(如,OK,No Content) 6. `responseText`:作為字符串形式的來自服務器的完整響應 7. `responseXML`: Document對象,表示服務器的響應解析成的XML文檔 8. `abort()`:取消異步HTTP請求 9. `getAllResponseHeaders()`: 返回一個字符串,包含響應中服務器發送的全部HTTP報頭。每個報頭都是一個用冒號分隔開的名/值對,并且使用一個回車/換行來分隔報頭行 10. `getResponseHeader(headerName)`:返回headName對應的報頭值 11. `open(method, url, asynchronous [, user, password])`:初始化準備發送到服務器上的請求。method是HTTP方法,不區分大小寫;url是請求發送的相對或絕對URL;asynchronous表示請求是否異步;user和password提供身份驗證 12. `setRequestHeader(name, value)`:設置HTTP報頭 13. `send(body)`:對服務器請求進行初始化。參數body包含請求的主體部分,對于POST請求為鍵值對字符串;對于GET請求,為null ### 8.Q:javascript有哪些方法定義對象 1. 對象字面量: `var obj = {};` 2. 構造函數: `var obj = new Object();` 3. Object.create(): `var obj = Object.create(Object.prototype);` ### 9.Q:對象到字符串的轉換步驟 1. 如果對象有toString()方法,javascript調用它。如果返回一個原始值(primitive value如:string number boolean),將這個值轉換為字符串作為結果 2. 如果對象沒有toString()方法或者返回值不是原始值,javascript尋找對象的valueOf()方法,如果存在就調用它,返回結果是原始值則轉為字符串作為結果 3. 否則,javascript不能從toString()或者valueOf()獲得一個原始值,此時throws a TypeError ### 10.Q:對象到數字的轉換步驟 ~~~ 1. 如果對象有valueOf()方法并且返回元素值,javascript將返回值轉換為數字作為結果 2. 否則,如果對象有toString()并且返回原始值,javascript將返回結果轉換為數字作為結果 3. 否則,throws a TypeError ~~~ ### 11.Q:請用代碼寫出(今天是星期x)其中x表示當天是星期幾,如果當天是星期一,輸出應該是"今天是星期一" ~~~ var days = ['日','一','二','三','四','五','六']; var date = new Date(); console.log('今天是星期' + days[date.getDay()]); ~~~ ### 12.Q:javascript有哪幾種數據類型 六種基本數據類型 * undefined * null * string * boolean * number * [symbol](https://developer.mozilla.org/en-US/docs/Glossary/Symbol)(ES6) 一種引用類型 * Object ### 13.Q:javascript跨域通信 同源:兩個文檔同源需滿足 1. 協議相同 2. 域名相同 3. 端口相同 跨域通信:js進行DOM操作、通信時如果目標與當前窗口不滿足同源條件,瀏覽器為了安全會阻止跨域操作。跨域通信通常有以下方法 * 如果是log之類的簡單**單項通信**,新建`<img>`,`<script>`,`<link>`,`<iframe>`元素,通過src,href屬性設置為目標url。實現跨域請求 * 如果請求**json數據**,使用`<script>`進行jsonp請求 * 現代瀏覽器中**多窗口通信**使用HTML5規范的targetWindow.postMessage(data, origin);其中data是需要發送的對象,origin是目標窗口的origin。window.addEventListener('message', handler, false);handler的event.data是postMessage發送來的數據,event.origin是發送窗口的origin,event.source是發送消息的窗口引用 * 內部服務器代理請求跨域url,然后返回數據 * 跨域請求數據,現代瀏覽器可使用HTML5規范的CORS功能,只要目標服務器返回HTTP頭部\*\*`Access-Control-Allow-Origin: *`\*\*即可像普通ajax一樣訪問跨域資源 * Javascript作用鏈域? ~~~js 全局函數無法查看局部函數的內部細節,但局部函數可以查看其上層的函數細節,直至全局細節。 當需要從局部函數查找某一屬性或方法時,如果當前作用域沒有找到,就會上溯到上層作用域查找, 直至全局函數,這種組織形式就是作用域鏈。 ~~~ ### 14.Q:談談This對象的理解。 ### 15.Q:什么是window對象? 什么是document對象? ### 16.Q:看看下面運行結果? ~~~js window.onload=function(){ var a=1+"1";//11 var b="1"+1;//11 var c="abc"+12+5+"def";//abc125def var d="abc"+(12+5)+"def";//abc17def } ~~~ ### 17.Q:eval是做什么的? ~~~html 它的功能是把對應的字符串解析成JS代碼并運行; 應該避免使用eval,不安全,非常耗性能(2次,一次解析成js語句,一次執行)。 ~~~ ### 18.Q:jquery中如何將數組轉化為json字符串,然后再轉化回來? ~~~js $.fn.stringifyArray = function(array) { return JSON.stringify(array) } $.fn.parseArray = function(array) { return JSON.parse(array) } //然后調用: $("#xxx").stringifyArray(array) ~~~ ### 19.Q:documen.write和 innerHTML的區別 ~~~html document.write只能重繪整個頁面 innerHTML可以重繪頁面的一部分 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看