一些Java面試題
1. JavaScript語言中的基本型別有哪些?
(1)number:包括正數、負數、小數
(2)string
(3)boolean:有true或false
**住:**JS中的資料型別
(1)基本資料型別
(2)複合資料型別:函式、物件、陣列
(3)null、undefined
2. 寫出JavaScript在IE和FireFox瀏覽器中的一些差異(至少寫3條)
(1)新增事件
IE:element.attachEvent(”onclick”, func);。
FF:element.addEventListener(”click”, func, true)。
通用:element.onclick=func。雖然都可以使用onclick事件,但是onclick和上面兩種方法的效果是不一樣的,onclick只有執行一個過程,而attachEvent和addEventListener執行的是一個過程列表,也就是多個過程。例如:element.attachEvent(”onclick”, func1);element.attachEvent(”onclick”, func2)這樣func1和func2都會被執行。
(2)標籤的自定義屬性
IE:如果給標籤div1定義了一個屬性value,可以div1.value和div1[“value”]取得該值。
FF:不能用div1.value和div1[“value”]取。
通用:div1.getAttribute(”value”)。
(3)父節點、子節點和刪除節點
IE:parentElement、parement.children,element.romoveNode(true)。
FF:parentNode、parentNode.childNodes,node.parentNode.removeChild(node)。
(4)獲取窗體的高度和寬度
IE:document.body.offsetWidth和document.body.offsetHeight。注意:此時頁面一定要有body標籤。
FF:window.innerWidth和window.innerHegiht,以及document.documentElement.clientWidth和document.documentElement.clientHeight。
通用:document.body.clientWidth和document.body.clientHeight。
5. JavaScript程式設計題:寫一個Student類繼承Person類的例子。對應的類圖如下:
JS繼承方式:物件冒充
/**
*JS繼承方式:物件冒充
*/
function Person(age, name){
this.age = age;
this.name = name;
this.sayHello = function(){
}
}
function Student(score, age, name){
this.newMethod = Person;
this.newMethod(age, name);
delete this.newMethod;
this.score = score;
this.sayScore = function(){
}
}
/**
*call
*/
function Person(age, name){
this.age = age;
this.name = name;
this.sayHello = function(){
}
}
function Student(score, age, name){
Person.call(this, age, name);
this.score = score;
this.sayScore = function(){
}
}
/**
*apply
*可以把Student的整個arguments物件作為第二個引數傳遞給apply方法
*當然,只有超類中的引數順序與子類中的引數順序完全一致才可以傳遞引數物件。
*如果不是,就必須建立一個單獨的陣列,按照正確的順序放置引數。此外,還可使用call方法。
*/
function Person(age, name){
this.age = age;
this.name = name;
this.sayHello = function(){
}
}
function Student(score, age, name){
Person.apply(this, age, name);
this.score = score;
this.sayScore = function(){
}
}