1. 程式人生 > 其它 >2015.12.09 HTML5真題練習

2015.12.09 HTML5真題練習

HTML5學堂:每天一道題,強壯程式設計師!今日主要涉及12.08題目(原型、原型鏈、this屬性)的解答,以及一道涉及資料型別基本知識的題目。

HTML5真題【2015.12.08】答案解析

12.08真題題目如下,最終輸出的結果是多少?

<script>
function Fun(a, b) {
this.a = a;
this.b = b;
var c = 3;
}


Fun.prototype.sum = function() {
return this.a + this.b;
}


var fun = new Fun(1, 2);
console.log(fun.c);
console.log(fun.hasOwnProperty("sum"));
</script>

本題目的答案是:undefined和false。

本題目主要考察如下知識點:原型、原型鏈、this屬性。

解釋一下程式碼:建立了一個混合模式的面向物件的功能函式,建構函式名稱為Fun,在Fun當中,有兩個屬性,a和b,由於是使用this進行定義,在建構函式例項化之後,每個例項化物件就擁有了a和b這兩種屬性。c在Fun函式當中,是以var定義的,此類變數可以認為是Fun的區域性變數,並不會在Fun這個建構函式例項化的過程中創建出來。因此,fun.c的結果是undefined。

關於hasOwnProperty,先來介紹兩個方法:

hasOwnProperty:是用來判斷一個物件是否有給出名稱的屬性或物件(在方法中的引數)。不過需要注意的是,此方法無法檢查該物件的原型鏈中是否具有該屬性,該屬性必須是物件本身的一個成員。

isPrototypeOf:是用來判斷要檢查其原型鏈的物件是否存在於指定物件例項中,是則返回true,否則返回false。

回頭來看這道題,sum這個方法是在Fun原型上的方法,並非是例項化出來的fun函式自身的方法,因此此處返回false。

HTML5真題【2015.12.09】題目

<script>
var str = '127.5.0';
var result = Number(str);
if (result == '127') {
console.log('1');
} else if (result == '127.5') {
console.log('2');
} else if (typeof result == 'Number') {
console.log('3');
} else if (result) {
console.log('4');
} else if (result = 0) {
console.log('5');
} else {
console.log('6');
}
</script>

關於每日程式碼練習題的答案和解析,我們會在明日文章當中,釋出相關答案以及基本原理。(PS:週六日不釋出題目)