我是靠谱客的博主 真实小蝴蝶,这篇文章主要介绍js练习题目---关于构造函数,现在分享给大家,希望可以做个参考。

下列函数的输出结果是什么?

复制代码
1
2
3
4
5
if(function Bar(){}){ console.log("bar"); } console.log(typeof bar);

解析:

  1. 当if()内的表达式值为真时,才会执行{}内的语句,在js中, 只要不是undefined、null、 0、NaN、""、false.那么无论是任何对象,在条件语句中都为真。所以此时会进入到if语句块,打印出"bar"
  2. 在if()中声明的函数,值是一个表达式,并不会被存储在任何变量上,所以在全局内不会存在变量Bar,所以Bar是一个未定义的变量,那么typeof Bar的值就为undefined了。
  3. 注意:未声明的变量在typeof不会报错,返回一个"undefined".

拓展题:下面的函数会打印出’打印b’字符串吗?

复制代码
1
2
3
4
5
var b = new Boolean(false); if(b){ console.log('打印b'); }

解析:因为包装类生成的是一个对象,不是false,而是Boolean {false}这样的一个对象,所以if()内的语句不是假。

下列表达式会报错的是?

A.1++

B.16… toString(2)

C.NaN.toString();

D. typeof money;

解析

  1. 会报错Invalid left -hand side expression in postfix operation。1 ++相当于1=1+ 1,左侧没有意义,++/–仅针对变量可用,操作数不可以为常数。
  2. 此题若为16. toString()则会报错,为何16… toString()不会报错呢?此种做法是要跟数字区分开,16. toString()会被认为是小数,必然会报错,而16…toString0, 相当于16.0. toString(),此时16.0就已经是小数了,自然不会将其错认为小数了,所以不会报错。注意:想要使用toString方法将数字转换为字符串,一般情
    况下不要使用两个点的形式,可以用小括号将要转换的目标括起来,如: (16).toString().
  3. NaN是一个不是数的数,同样可以调用toString0,不会报错
  4. 参考第一题,你已经懂了

编造一个构造函数如下

  1. 编写一个Hero的构造函数。
  2. 具有health 属性,默认值是50。
  3. 具有attack() 方法,参数为Hero的实例h,每次h随机减少20 ~ 80的血量(整数)
  4. 具有injured() 方法,参数为受到的伤害量num, 如果num大于已有血量输出“啊~我死了”, 否则,输出“我还能挺一回合。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function Hero(){ this.health = 50; this.attack = function(h){ // [0,1) var randomNum =20+ Math.floor(Math.random()*61); h.injured(randomNum); //在这里传参 } this.injured = function (num){ if(num > this.health){ console.log('啊,我死了!') }else{ console.log('我还能秀!') this.health -= num; } } } var luban = new Hero(); var luna = new Hero(); luna.attack(luban); console.log(luban.health);

最后

以上就是真实小蝴蝶最近收集整理的关于js练习题目---关于构造函数的全部内容,更多相关js练习题目---关于构造函数内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部