網易雲課堂《JS原創視頻教程-知識點類》

http://caniuse.com/#index     //Can I use... Support tables for HTML5, CSS3, etc-支持h5和css3的狀況列表 javascript

JS包含: DOM  ECMA   BOMcss

==歷史管理

方法一:用onhashchange:改變hash值來管理html

產生7個隨機數顯示,產生一串數據數字昨晚 obj 對象的key,number做爲值;關鍵賦值給hashjava

當前進後退是 hash改變,觸發,取值顯示到頁面。node

產生多少個隨機數的方法。jquery

方法二:css3

目前上面前進後退 地址欄是不會變化的,如若要變化,能夠在 pushState函數第三個參數每次傳一個遞增的數據:var inow=1; 傳 inow++;算法

==DOM

==JS跨域問題:jsonp

window.name, 內容是寫到name上的,不會被暴露出來,《==不是很理解 json

【原創】說說JSON和JSONP,也許你會豁然開朗,含jQuery用例 - 隨它去吧 - 博客園
http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html跨域

JSONP是如何工做的? | Melon---沒有太細看
http://blog.bpzufang.com/blog/2014/08/08/how-jsonp-really-works/

 ==閉包:

上面的a是局部變量,執行aaa()後a並無被回收,經過調用b();a會不斷累加。可是執行alert(a)會報錯,由於a是局部的。

 在JS中若是在函數的兩邊加上括號(),此函數就有函數聲明變成了函數表達式,再在後面加上()像這樣(function(){})();函數就會自執行。

模塊化代碼的一個模型

 

1、什麼是閉包?
2、閉包有什麼好處?應用在哪裏?
   閉包好處:
 1、但願一個變量長期駐紮在內存當中;
 2、模塊化代碼,避免全局變量的污染;
 3、私有函數,私有成員。
 3、閉包須要注意的地方?
IE下 可能會引起內存泄漏,解決方法 兩個:
window.onload = function(){
  var oDiv = document.getElementById('div1');
  oDiv.onclick = function(){
    alert(oDiv.id);
  };
  window.onunload = function (){
    oDiv.onclic = null;
  };
}
===
window.onload = function(){
  var oDiv = document.getElementById('div1');
  var id =oDiv.id;
  oDiv.onclick = function(){
    alert(id);
  };
 oDiv = null;
}

學習Javascript閉包(Closure) - 阮一峯的網絡日誌
http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html

===操做Iframe

防止被嵌套,被釣魚

var oIframe = document.getElementById('iframe1');
oIframe.contentWindow.document.getElementById('div1').style.color='red'; 全部瀏覽器均可以

IE瀏覽器沒有問題,在crome下直接打開不能夠(在服務器下能夠,爲了安全)
oIframe.contentDocument.getElementById(); ie6 ie7是不支持的

 ==對象操做-淺拷貝 深拷貝

 

==快速排序  

==枚舉算法

obj.inertBefore(oLi,aLi[0]);

obj.appenChild(oLi)

obj.inertBefore(aLi[i],aLi[0]);//這樣起到交互的效果?

==函數聲明和函數表達式

函數聲明和函數表達式

 區別:

一、函數表達式能夠直接在後面添加括號執行,而函數聲明不能夠。

二、函數聲明能夠提早被解析出來  (預編譯)

覺得預編譯,因此與IF沒有什麼關係了,並非想象的編譯第一個。

 ==事件委託

原本是本身作的事情 ,卻給了別人替你作這件事情

:利用冒泡的原理,把事件加到父級上,觸發執行效果

 

window.onload = function(){ 
 var oUl = document.getElementById(‘ull‘);
var aLi = document.getElementsByTagName(‘li‘);

oUl.onmouseover = function(ev){ 
 var event = ev||window.event; // 獲取event對象
var target = ev.target || ev.srcElement; // 獲取觸發事件的目標對象

if(target.nodeName.toLowerCase() == ‘li‘){ //判斷目標對象是否是li
 target.style.background = ‘red‘;
 }

}
代碼中加了一個標籤名的判斷,主要緣由是若是不加判斷,當你鼠標移入到父級oUL上面的時候,整個列表就會變紅,這不是咱們想要的結果,因此要判斷一下。
target.nodeName 彈出的名字是大寫的,因此須要轉換大小寫再比較。
相關文章
相關標籤/搜索