摘要:原型規則所有的函數,都有一個屬性顯示原型,屬性值也是一個普通對象原型規則所有的引用類型數組對象函數,屬性值指向它的構造函數的屬性值。注釋其實是的語法糖,的構造函數是,所有。要在執行是才能確認值,定義是無法確認的幾種使用場景作為構造函數執行。
1.js中使用typeof能得到哪些類型?
number string boolean object function undefined 如果變量是null,則typeof會返回 object。typeof undefined 返回 undefined。
2.window.onload和DOMContentLoaded的區別
一般情況下,DOMContentLoaded事件要在window.onload之前執行,當DOM樹構建完成的時候就會執行DOMContentLoaded事件,而window.onload是在頁面載入完成的時候,才執行,這其中包括圖片等元素。大多數時候我們只是想在DOM樹構建完成后,綁定事件到元素,我們并不需要圖片元素,加上有時候加載外域圖片的速度非常緩慢。 if(obj.a == null){ //這里相當于 obj.a === null || obj.a === undefined ,簡寫形式 }
3.原型規則=>所有的引用類型都有構造函數
var a={} 其實是 var a = new Object()的語法糖 var b=[] 其實是 var b = new Array()的語法糖 function Foo(){...} 其實是 var Foo = new Function(...)
4.原型規則=>所有的引用類型(數組、對象、函數),都具有對象特性,即可自由擴展(除了“null” 之外)。
var a = [1,2,3,4]; a.name = ‘你好’; function foo(){}; foo.age = 21;
5.原型規則=>所有的引用類型(數組、對象、函數),都有一個__proto__屬性(隱式原型),屬性值是一個普通的對象。
6.原型規則=>所有的函數,都有一個prototype屬性(顯示原型),屬性值也是一個普通對象
7.原型規則=>所有的引用類型(數組、對象、函數),__proto__屬性值指向它的構造函數的“prototype”屬性值。
var obj = {}; obj.a=100; obj.__proto__ === Object.prototype 注釋:var obj ={} 其實是 var obj = new Objec()的語法糖,obj的構造函數是Object,所有 obj.__proto__ === Object.prototype。
8.原型鏈
當試圖得到一個對象的某個屬性時,如果這個對象本身沒有這個屬性,那么就會去它的__proto__ (即它的構造函數的prototype) 中尋找。 function Foo(name){ this.name = name; } Foo.prototype.sayName = function(){ console.log("my name is "+this.name); } var foo1 = new Foo("zhangsan"); foo1.printName = function(){ console.log("print name "+this.name); } foo1.printName(); foo1.sayName(); foo1.toString(); //foo1.__proto__為Foo.prototype,Foo.prototype.__proto__為Object.prototype
9.f instanceof Foo 的邏輯判斷是:
f 的 __proto__ 一層一層往上,能否對應到 Foo.prototype 備注:閱讀源碼是高效提高技能的方式 不能“埋頭苦鉆”有技巧在其中,搜jquery源碼解讀分析等等 慕課網搜索“zepto設計和源碼分析”免費教程。
10.this 要在執行是才能確認值,定義是無法確認
this的幾種使用場景:
1.作為構造函數執行。
2.作為對象屬性執行。
3.作為普通函數執行。
4.call、apply、bind。
11.作用域
在es6之前,ECMAScript的作用域只有兩種:全局作用域、函數作用域。正是因為有這兩種作用域,所以在javascript中出現--術語--“變量提升”。es6提供了塊級作用域,且“塊級作用域”并不影響var聲明的變量。var聲明的變量的性質和原來一樣,還是具有‘變量提升’的特性。而‘塊級作用域’通過新增命令let和const來體現。
12.閉包
實例1:
注釋:函數的父級作用域是它定義時的作用域,不是執行時的作用域。
實例2:
輸出為: example increment 1 2 3
注釋:當一個函數返回另一個函數時,才會真正涉及閉包。返回的函數可以訪問僅存在于其閉包中的變量
13.閉包在實際開發中的應用
//閉包實際應用主要用于封裝變量,收斂權限。 function isFirstLoad(){ var _list =[]; return function( id ){ if ( _list.indexOf ( id ) >=0 ){ return false; } else { _list.push(id); return true; } } } var firstLoad = isFirstLoad(); firstLoad ( 10 ) // true firstLoad ( 10 ) // false firstLoad ( 20 ) // true
14.同步、異步和單線程
前端使用異步的場景:
定時任務:setTimeout, setInterval
網絡請求:ajax請求,動態加載
事件綁定
注釋:
執行第一行,打印100
執行setTimeout后,傳入setTimeout的函數會被暫存起來,不會立即執行(單線程的特點,不能同時干兩件事)。
執行最后一行,打印300
待所有程序執行完,處于空閑狀態時,會立馬看有沒有暫存起來的要執行。
發現暫存起來的setTimeout中的函數無需等待時間,就立即拿過來執行,如果
setTimeout(function(){
console.log(200);
},1000),暫存起來的setTimeout函數有需要等待的時間,則會在等待時間后執行。
同步:
console.log(100);
alert(200);
console.log(300);
同步和異步的區別:同步會阻塞代碼的執行,而異步不會。
18.DOM屬于哪種基本的數據結構?
樹
19.ajax -XMLHttpRequest
get請求:
post請求:
20.跨域
可以跨域加載資源的三個標簽:
JSONP實現原理:
服務器端設置 http header
21.存儲
cookie
本身用于客戶端和服務器端通信
但是它有本地存儲的功能,于是被“借用”
使用document.cookie = ...獲取和修改即可
cookie用于存儲的缺點
存儲量太小,只有4KB
所有http請求都帶著,會影響獲取資源的效率
API簡單,需要封裝才能用document.cookie = ...
cookie的內容只要包括:名字,值,過期時間,路徑和域。路徑和域一起構成cookie的作用范圍。若不設置過期時間,則cookie的生命周期為瀏覽器會話期間,關閉瀏覽器窗口,cookie就會消失。這種生命周期為瀏覽器會話期的cookie被稱為會話cookie。
會話cookie一般不存儲在硬盤上而是保存在內存里。若設置了過期時間,瀏覽器會把cookie保存在硬盤上,關閉再次打開瀏覽器,這些cookie仍然有效直到超過設定的過期時間。存儲在硬盤上的cookie可以在同類型的瀏覽器間共享,比如兩個IE窗口。
locationStorage和sessionStorage
THML5專門為存儲而設計,最大容量5M
API簡單易用:
localStorage.setItem( key, value);localStorage.getItem( key, value)
sessionStorage生命周期為當前窗口或標簽頁,一旦窗口或標簽頁被永久關閉了,那么所有通過sessionStorage存儲的數據也就被清空了。localStorage生命周期是永久。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/106873.html
摘要:基礎鞏固基礎總結使用已經好幾年了,由于工作主要是做服務端開發,在工作中逐漸發現的使用范圍原來越廣泛。這里要注意,務必將基礎部分掌握牢靠,磨刀不誤砍柴功,只有將基礎部分掌握并建立起系統的知識體系,在后面學習衍生的其他模式才能游刃有余。 基礎鞏固:JavaScript基礎總結 使用JavaScript已經好幾年了,由于工作主要是做服務端開發,在工作中逐漸發現JavaScript的使用范圍原...
摘要:前綴規范每個局部變量都需要有一個類型前綴,按照類型可以分為表示字符串。例如,表示以上未涉及到的其他對象,例如,表示全局變量,例如,是一種區分大小寫的語言。布爾值與字符串相加將布爾值強制轉換為字符串。 基本概念 javascript是一門解釋型的語言,瀏覽器充當解釋器。js執行時,在同一個作用域內是先解釋再執行。解釋的時候會編譯function和var這兩個關鍵詞定義的變量,編譯完成后從...
摘要:變量定義變量使用關鍵字變量名變量名可以任意取名,但要遵循命名規則變量必須使用字母下劃線或者美元符開始。語法參數說明在消息對話框中要顯示的文本返回值值。返回值點擊確定按鈕,文本框中的內容將作為函數返回值。 簡述 本系列將持續更新Javascript基礎部分的知識,誰都想掌握高端大氣的技術,但是我覺得沒有一個扎實的基礎,我認為一切高階技術對我來講都是過眼云煙,要成為一名及格的前端工程師,必...
摘要:案例每隔毫秒調用函數并顯示時間。當點擊按鈕時,停止時間代碼如下計時器每隔毫秒調用函數,并將返回值賦值給計時器計時器,在載入后延遲指定時間后去執行一次表達式僅執行一次。該值標識要取消的延遲執行代碼塊。 簡述 本系列將持續更新Javascript基礎部分的知識,誰都想掌握高端大氣的技術,但是我覺得沒有一個扎實的基礎,我認為一切高階技術對我來講都是過眼云煙,要成為一名及格的前端工程師,必須把...
摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經到來了,總結過去的 2017,相信小伙們一定有很多收獲...
摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經到來了,總結過去的 2017,相信小伙們一定有很多收獲...
閱讀 1389·2021-10-11 10:58
閱讀 1471·2021-09-04 16:41
閱讀 670·2019-08-30 15:55
閱讀 799·2019-08-29 18:46
閱讀 3133·2019-08-29 14:05
閱讀 3525·2019-08-26 14:00
閱讀 2448·2019-08-26 13:53
閱讀 3164·2019-08-26 13:29