標籤:方法 alert button pre code 利用 位置 var 例子
1. javascript的typeof返回哪些資料類型
返回六大類型 number string object function undefined
例:typeof 37===‘number‘ typeof "str"===‘string‘
typeof true===‘boolean‘ ; typeof undefined===‘undefined‘
typeof {a:1}===‘object‘ ; typeof function(){}===‘function‘
2. 例舉3種強制類型轉換和2種隱式類型轉換?
強制類型:(parseInt,parseFloat,number)
Boolean(value):把值轉換成Boolean類型; Number(value):把值轉換成數字(整型或浮點數)
String(value):把值轉換成字串。
隱式類型:(== - ===)
- split() 、join() 的區別
前者是切割成數組的形式,後者是將數群組轉換成字串
Split( ) 字串方法 將字串用分隔字元將它們串連起來返回字串數 組
join() 數組方法 把數組的所有元素放入一個字串。
簡單地說,如果你用split(),是把一串字串(根據某個分隔字元)分成若干個元素存放在一個數組裡。
而join是把數組中的字串串連成一個長串,可以大體上認為是split的逆操作。
4. 數組方法pop() push() unshift() shift()
push()像數組尾部追加元素 pop()尾部刪除 unshift()頭部添加 shift()頭部刪 除
例 var Array=["A" ,"J"];
Array.push("L");//尾部增加
Array.pop();//尾部刪除
Array.unshift("Q") //頭部追加
Array.shift() //頭部刪除
console.log(Array) //最後數組裡面的元素還是原來的
- 事件綁定和普通事件有什麼區別
區別 普通添加事件的方法不支援添加多個事件,最下面的事件會覆蓋上面的,
而事件綁定(addEventListener)方式添加事件可以添加多個。
例子
var btn = document.getElementById("btn");
btn.onclick = function () { alert(‘普通事件1‘);//不執行 }
btn.onclick = function () { alert(‘普通事件2‘);//彈出 }
// 上面用普通方法添加兩個事件,下面用事件綁定添加兩個事件。 btn.addEventListener(‘click‘, function () { alert(‘事件綁定1‘);//彈出 },false); btn.addEventListener(‘click‘, function () { alert(‘事件綁定2‘);//彈出 },false);
- IE和DOM事件流的區別
IE採用冒泡型事件 Netscape使用捕獲型事件 DOM使用先捕獲後冒泡型事件
1.執行順序不一樣、
冒泡型事件模型: button->div->body (IE事件流)
捕獲型事件模型: body->div->button (Netscape事件流)
DOM事件模型: body->div->button->button->div->body (先捕獲後冒泡)
2.參數不一樣
IE使用:
[Object].attachEvent("name_of_event_handler", fnHandler); //綁定函數
[Object].detachEvent("name_of_event_handler", fnHandler); //移除綁定
DOM使用:
[Object].addEventListener("name_of_event", fnHandler, bCapture); //綁定函數
[Object].removeEventListener("name_of_event", fnHandler, bCapture); //移除綁定
3.事件加不加on
Dom事件通過addEventListener添加元素監聽事件,第一個參數是事件名稱沒有on開頭(onclick要寫成click)
4.this指向問題
IE下利用attachEvent註冊的處理函數調用時this指向不再是先前註冊事件的元素,這時的this為window
dom通過addEventListener註冊的處理函數調用時this指的是先前註冊事件的元素
7. IE和標準下有哪些相容性的寫法
Var ev = ev || window.event
document.documentElement.clientWidth || document.body.clientWidth
Var target = ev.srcElement||ev.target
8. call和apply的區別
call, apply作用就是借用別人的方法來調用,就像調用自己的一樣.
call方法:
文法:call([thisObj[,arg1[, arg2[, [,.argN]]]]])
則是直接的參數列表,主要用在js對象各方法互相調用的時候,使當前this執行個體指標保持一致,或在特殊情況下需要改變this指標。如果沒有提供 thisObj 參數,那麼 Global 對象被用作 thisObj。
apply方法:
文法:apply([thisObj[,argArray]])
apply:最多隻能有兩個參數——新this對象和一個數組
更簡單地說,apply和call功能一樣,只是傳入的參數列表形式不同:如 func.call(func1,var1,var2,var3)對應的apply寫法為:
func.apply(func1,[var1,var2,var3])
9. b繼承a的方法
定義a 並擴充其原型屬性
function a(){
}
a.prototype.myname="貓";
a.prototype.myage=18;
a.prototype.study=function () {
alert(111)
};
var m=new a();
m.study();
document.write(m.myname)
function b() {
};
b繼承a的方法
b.prototype=a.prototype;
var m1=new b();
m1.study();
document.write(m1.myage)
- 如何阻止事件冒泡和預設事件
阻止預設事件
1.在javescript中,return flase可以阻止預設事件,但必須加在onmousedown事件中,down的事兒幹完了,再加return flase。
2、在自訂函數addEvent中,return flase會失效,請使用事件對象來進行阻止。ev.preventDefault();//阻止預設事件。
3、、在低版本的IE中這些都不好使,需在onmousemove事件中調用obj.setCapture&&obj.setCapture();並且在onmouseup事件中清除obj.releaseCapture&&obj.releaseCapture();
阻止事件冒泡:
1、當子級的事件觸發時,其父級的事件也被觸發了。
2、冒泡跟它們在頁面中的顯示位置無關,只要在html結構中兩者是屬於父子關係,就存在事件冒泡。
3、阻止事件冒泡必須加在子級的身上。通過事件對象進行阻止。ev.cancelBubble=true;
javascript 面試題目