一、this的理解
在JavaScript中,this通常指向的是我們正在執(zhí)行的函數(shù)本身,或者是,指向該函數(shù)所屬的對象 1.全局的this -> 指向的是window 2.對象中的this -> 指向其本身 3.事件中this -> 指向事件對象
二、jquery.extend與jquery.fn.extend的區(qū)別 jquery.extend用來擴(kuò)展jquery對象本身 jquery.fn.extend用來擴(kuò)展jquery實例
三、閉包 閉包簡單而言就是內(nèi)層作用域可以訪問外層作用域的變量,閉包中引用到的包裹函數(shù)中定義的變量永遠(yuǎn)不會被釋放,應(yīng)用到閉包時需要注意及時釋放閉包函數(shù)(內(nèi)存泄漏); 四、事件綁定1.addEventListener; 2.attachEvent(IE低版本) 五、阻止事件冒泡e.stopPropagation();/* 標(biāo)準(zhǔn) */ event.cancelBubble=true;/* <=ie9 */ 六、阻止默認(rèn)事件return false / e.preventDefault(); 七、原生js操作dom節(jié)點(diǎn)obj.appendChild(); //添加 obj.insertBefore(); //插入 obj.replaceChild(); //替換 obj.removeChild(); //刪除 八、undefined的產(chǎn)生1.變量定義了沒有被賦值; 2.想要獲取一個對象上不存在的屬性或者方法; 3.數(shù)組中沒有被賦值的元素;(not defined 語法錯誤)
//函數(shù)聲明與變量聲明會被js引擎隱式提升到當(dāng)前作用域的頂部,但是只提升名稱不會提升賦值部分
var foo = 1; a(); function a(){ console.log(foo); //undefined var foo = 2; console.log(foo); //2
} 十、js精度不能精確到0.1???// js精度不能精確到0.1 var n = 0.3,m = 0.2,i = 0.2, j =0.1;
console.log((n-m) == (i-j)); //false console.log((n-m) == 0.1); //false console.log((i-j) == 0.1); //true console.log(n-m); //0.09999999999999998 console.log(i-j); //0.1 十一、bind live delegatebind:綁定事件,對新添加的事件不起作用,方法用于將一個處理程序附加到每個匹配元素的事件上并返回jQuery對象 live:方法將一個事件處理程序附加到與當(dāng)前選擇器匹配的所有元素(包含現(xiàn)有的或?qū)硖砑拥模┑闹付ㄊ录喜⒎祷豭Query對象 delegate:方法基于一組特定的根元素將處理程序附加到匹配選擇器的所有元素(現(xiàn)有的或?qū)淼模┑囊粋€或多個事件上 十二、js函數(shù)聲明優(yōu)先于變量聲明// 返回的是函數(shù)b(c)而不是變量b(c),不論是先聲明的變量還是函數(shù) function b(){} var b; console.log(typeof b); //function
var c; function c(){} console.log(typeof c); //function 十三、arguments的操作function foo(a){
arguments[0]=2; console.log(a); //2 // 因為 1. arguments是對實參的訪問; 2. 通過arguments[i]可以修改指定實參的值
} foo(1);
十四、瀏覽器渲染模式是標(biāo)準(zhǔn)模式,還是怪異模式// 標(biāo)準(zhǔn)模式/怪異模式 取決于是否有 <!DOCTYPE html> 聲明,沒有的是舊版的,有聲明的是w3c之后的,為保證原來的頁面也可以正常運(yùn)行,而采用不同的模式// BackCompat 對應(yīng) quirks mode(怪異模式)
// CSS1Compat 對應(yīng) strict mode(標(biāo)準(zhǔn)模式)
console.log(window.top.document.compatMode); //CSS1Compat
|