js原型鏈,作用域,閉包講解


 

當面試的時候遇到問原型鏈,閉包,還有作用域,直接 拿張紙和筆把原型鏈畫出來,閉包跟作用域直接用筆寫幾道題出來加深理解(因為我們是理科生,圖形和題目以及控制台輸出結果才是最直觀的方法)

問:什么是原型鏈?

答:Javascript是面向對象的,每個實例對象都有一個__proto_屬性,該屬性指向它原型對象,這個實例對象的構造函數有一個原型屬性prototype,與實例的__proto__屬性指向同一個對象。當一個對象在查找一個屬性的時,自身沒有就會根據__proto__ 向它的原型進行查找,如果都沒有,則向它的原型的原型繼續查找,直到查到Object.prototype._proto_nul,這樣也就形成了原型鏈。

 

問:如何查找構造函數和原型中的屬性?

答:

構造函數.prototype  查看構造函數的原型屬性

實例對象.__proto__ 查看實例對象的構造函數的原型

實例對象.__proto__.constructor 查看實例對象的構造函數

原型鏈見過最好的圖片,不啰嗦

體現在代碼上:

其實非常的簡單

栗如:

我們可以先寫一個構造函數,然后在它的prototype中寫入方法,然后我們可以在入口函數中去寫一個實例對象,用實例對象的方法去調用,這樣子寫代碼可以做到邏輯清晰,代碼簡潔大方。

 1 var letao;
 2 $(function() {
 3     letao = new Letao();
 4     letao.login();
 5 });
 6 
 7 var Letao = function() {
 8 
 9 }
10 
11 Letao.prototype = {
12     //登錄函數
13     login: function() {
14         // 1. 獲取登錄的按鈕添加點擊事件
15         $('.btn-login').on('click', function() {
16             // 2. 獲取輸入的用戶和密碼
17             var username = $('.mui-input-clear').val();
18             var password = $('.mui-input-password').val();
19             // 3. 驗證用戶名密碼是否輸入
20             if (!username) {
21                 // 第一個參數是提示內容 第二個參數是一個對象(提示框的設置) duration提示信息的長短  type 提示的標簽類型 long short 和 數字
22                 mui.toast('請輸入用戶名', { duration: 'long', type: 'div' })
23                 return;
24             }
25             if (!password) {
26                 // 第一個參數是提示內容 第二個參數是一個對象(提示框的設置) duration提示信息的長短  type 提示的標簽類型 long short 和 數字
27                 mui.toast('請輸入密碼', { duration: 'long', type: 'div' })
28                 return;
29             }
30             // 4. 調用登錄的API去驗證是否登錄成功
31             $.ajax({
32                 url: '/user/login',
33                 data: { username: username, password: password },
34                 type: 'post',
35                 success: function(data) {
36                     // 5. 判斷返回的結果是否有錯誤
37                     if (data.error) {
38                             // 如果有錯誤把錯誤信息提示一下
39                         mui.toast(data.message, { duration: 'long', type: 'div' })
40                         return;
41                     }else{
42                             // 如果登錄成功就跳轉到個人中心頁面
43                             window.location.href = 'user.html';
44                     }                    
45                 }
46             })
47         })
48     }
49 }

 這個如果ti

 js作用域一步步透徹理解

https://www.cnblogs.com/skylar/p/3986087.html

在面試中,怎樣能通俗易懂又不白痴的回答出面試官提出的js中閉包問題?

 https://www.zhihu.com/question/52491175

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM