JavaScript知識點抒寫

1.閉包

1.1 閉包簡單來說就是能夠讀取其他函數內部變量的函數
1.2 閉包是指有權訪問另一個函數作用域中變量的函數,創建閉包的最常見的方式就是在函數內創建另一個函數,通過另一個函數來訪問這個函數的局部變量,總的來說就是利用閉包可以突破作用鏈域
1.3 閉包優缺點:使用閉包是爲了設置私有的方法和變量,優點是可以避免全局變量的污染,缺點是會常駐內存,增大內存使用量,使用不當很容易造成內存泄漏。
1.4 在js中函數即閉包,只有函數纔會產生作用域的概念,閉包的最大用處一個是可以讀取函數內部變量,另一個就是這些變量始終保存在內存中,再一個就是封裝對象的私有屬性和私有方法。
閉包總結:閉包可以實現封裝和緩存,但是內存消耗太大,使用不當會造成內存溢出的問題
實例:

function fn(){
  var a = 10;  // fn的活動對象之中;
  return function(){   //匿名函數的活動對象;
        alert(a);
  }
}
var b = fn();
b();  //10

2.作用域鏈、JavaScript、原型鏈

2.1 作用域鏈的作用是保證執行環境有訪問的變量和函數是有序的,
作用域鏈的變量只能向上訪問,且訪問到window對象時終止,向下訪問變量是不被允許的。
2.2 每一個對象呢都會在內部初始化一個屬性,就是prototype(原型),當我們訪問一個對象的屬性時,如果這個對象內部不存在這個屬性,那麼就會去prototype裏尋找,這個prototype又有自己的prototype,就這樣找下去,直到找到爲止或者window終止。這也就是原型鏈的概念
2.3 原型與原型鏈的關係:instance.constructor.prototype=instance.__proto__

3.事件代理

3.1 事件代理,又被稱爲事件委託。是js中常用綁定事件的技巧。
3.2 事件代理:就是把原有需要的事件委託給父元素,讓父元素來監聽,事件代理的原理是DOM元素的事件冒泡。
3.3 使用事件代理的好處:可以提高性能,可以大量節省內存佔用,減少註冊事件,例如在ul上代理所有liclick事件就非常方便

4.js的繼承

想要繼承就必須要提供一個父類,(繼承誰,提供繼承的屬性)

// 父類
    function person(name){   //給構造函數添加參數
        this.name=name;
        this.sum=function(){
            alert(this.name)
        }
    }
    person.prototype.age=20    //給構造函數添加了原型屬性

4.1 構造繼承

// 借用構造函數繼承
function con(){
    person.call(this,'jie'); //重點
    this.age=18;
}
var cons=new con()
console.log(cons.name);   //jie
console.log(cons.age);    //18
console.log(cons instanceof person)  //false

4.2 原型鏈繼承

// 原型鏈繼承
function son(){
    this.name='jie'
}
son.prototype=new person()  //主要
var son1=new son()
console.log(son1.age)  //20
/* instanceof 判斷元素是否在另一個元素的原型鏈上
son1繼承了person的屬性,返回true*/
console.log(son1 instanceof person)

4.3 實例繼承

// 實例繼承
function Cat(name){
    var ins=new person()
    ins.name='tom'
    return ins
}
var cat=new Cat()
console.log(cat.name)   //tom
console.log(cat.age)   //20
console.log(cat instanceof person)   //true
console.log(cat instanceof Cat)  //false

5.this的理解

this總是指向函數的直接調用者(而非間接調用者);如果有new關鍵字,this指向new出來的那個對象;在事件中,this指向觸發這個事件的對象,特殊的是IE中,attachEventthis總指向全局對象window

6.事件模型

w3c中定義事件發生經歷的三個階段:捕獲階段,目標階段,冒泡階段
6.1 冒泡事件:當你使用事件冒泡時,子級元素先觸發,父級元素後觸發
阻止冒泡:在w3c中,使用stopPropagation()方法;但在IE中設置cancelBubble=true
6.2 捕獲事件:當你使用事件捕獲時,父級元素先觸發,子級元素後觸發
阻止捕獲:在w3c中,使用preventDefault()方法,在IE中設置window.event.returnValue=false

7.new操作符的理解

創建一個空對象,並且this變量引用該對象,同時還繼承了該函數的原型;屬性和方法被加入到this引用的對象中;新創建的對象由this所引用,並且最後隱式返回this

8.Ajax原理

8.1 Ajax原理簡單來說就額是在用戶和服務器之間加了一箇中間層(AJAX引擎),通過XmlHttpRequest對象來向服務器發送異步請求,從服務器獲得數據,然後用JavaScript來操作DOM從而更新頁面;使用戶操作與服務器響應異步化。這其中最關鍵的一步就是從服務器獲得請求數據。
8.2 Ajax的過程只涉及JavaScript、XMLHttpRequest和DOM。XMLHttpRequest是Ajax的核心機構

var xhr = new XMLHttpRequest()    //創建鏈接
xhr.open('get','sanji.php?p_id=0')    //鏈接到服務器
xhr.send()      //發送請求
xhr.onload = function () {          //接受請求
    var data = JSON.parse(xhr.responseText)
    // console.log(data)
    var options='<option value="">--請選擇--</option>'
    // var options=''
    for(var i=0;i<data.length;i++){
        var option=`<option value="${data[i].id}">${data[i].title}</option>`
        options+=option
    }
    document.querySelector('#province').innerHTML=options
}

8.3 Ajax優缺點 優點:通過異步模式,提升了用戶體驗,優化了瀏覽器與服務器之間的傳輸,減少了不必要的數據往返,減少寬帶佔用,ajax在客戶端運行,承擔了一部分本來由服務器承擔的工作,減少了大量用戶量的的服務器負載;ajax還可以實現動態不刷新(也就是局部刷新)
缺點:安全問題ajax暴露了與服務器交互的細節,對搜索引擎的支持較弱,不容易調試

9.解決跨域問題

在想解決跨域之前要先了解一下瀏覽器的同源政策。同源政策目的是爲了保證用戶信息的安全,防止惡意的網站竊取數據,那同源政策是什麼?所謂同源是指"協議+域名+端口"三者相同,如果有一個不相同則非同源
9.1 使用ajax的json
頁面

$(document).ready(function(){
   var url='http://localhost:8080/WorkGroupManagment/open/getGroupById"
       +"?id=1&callback=?';
   $.ajax({
     url:url,
     dataType:'jsonp',
     processData: false, 
     type:'get',
     success:function(data){
       alert(data.name);
     },
     error:function(XMLHttpRequest, textStatus, errorThrown) {
       alert(XMLHttpRequest.status);
       alert(XMLHttpRequest.readyState);
       alert(textStatus);
     }});
   });

json格式

{
    "message":"獲取成功",
    "state":"1",
    "result":{"name":"工作組1","id":1,"description":"11"}
}

9.2 nginx代理解決跨域
要配置nginx來代理頁面和後端的請求路徑

結尾:總的來說就是書寫一下加深自己的記憶,多看多寫總會理清的。讀書百遍其義自見,熟能生巧嘛

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章