HTML5学堂:每天一道题,强壮程序员!今日主要涉及12.08题目(原型、原型链、this属性)的解答,以及一道涉及数据类型基本知识的题目。
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。
<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:周六日不发布题目)
本文分享自微信公众号 - HTML5学堂(h5course-com),作者:HTML5学堂
原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。
原始发表时间:2015-12-11
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句