2015.12.09 HTML5真題練習
阿新 • • 發佈:2022-05-04
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:週六日不釋出題目)