# 1.有一个对象obj,给它添加一个属性“firstname”,值为“judd”。下面选项中语法错误的是?(选择两项)
**A.**obj[firstname]='judd'
**B.**obj.'firstname'='judd'
**C.**obj.firstname='judd'
**D.**obj['firstname']='judd'
本题考查对象属性的添加。
对象添加属性有两种语法,一种是点语法,属性名不需要引号包裹,如C选项中的obj.firstname='judd'。还有一种是中括号语法,属性名要使用引号包裹,如D选项中的obj['firstname']='judd'。
A选项中,使用中括号语法,属性名没有使用引号包裹错误。
B选项中,使用点语法,属性名多加了一对引号错误。
所以本题正确答案为AB。
# 2.以下哪种方法可以在控制台输出“小课”?(选择两项)
**A.**person. username()
**B.**console.log(person. username)
**C.**console.log(person.fn)
**D.**person.fn()
本题考查对象属性的获取以及方法的调用。
username是对象person的属性,获取时不需要加括号调用,所以A错误,B正确。
fn是对象person的方法,方法就是一个函数,需要加括号调用,即person.fn(),所以C错误,D正确。
本题答案为BD。
# 3. 以下代码中,弹出的结果依次为?(选择一项)
**A.**牙刷,5,牙刷的价格为5元
**B.**牙刷,5,fn:function(){alert(“牙刷的价格为5元”)}
**C.**product, price, fn
**D.**product, price,function
参考解析:
本题考查for..in遍历对象。
for..in遍历对象的基本语法为for(var i in obj){} ,其中i表示对象的属性名,obj表示要遍历的对象。本题代码中,遍历时输出i,所以会输出对象obj的属性名,即product, price,fn,本题答案为C。
# 4.以下代码,输出的结果是?(选择一项)
**A.**1
**B.**2
**C.**3
**D.**4
本题考查函数的执行上下文。
本题代码中,先调用了obj对象的a方法,并把返回值this.b赋值给全局变量obj1。a方法是obj调用的,所以a中的this指向obj。那么this.b获取到的是obj的b方法,后面调用obj1相当于调用了obj的b方法。obj1是在全局下面调用的,所以b方法中的this指向的是全局对象window,所以this.c获取的就是全局下的变量c,输出结果为1**,本题答案为A。**
# 5.以下代码的输出结果为?(选择一项)
**A.**6
**B.**5
**C.**2
**D.**1
本题考查数组中的执行上下文
数组中的元素如果是函数,那么通过数组下标的方式调用函数,这个函数中执行上下文,就是这个数组。
本题代码中,obj的属性c是一个数组,我们后面叫它数组c。数组c中下标为2的元素是一个函数,所以obj.c2就是取到数组下标为2的元素并调用,这个函数的this指向的就是数组c。this[1]拿到的就是数组c下标为1的元素a,a没有加引号,是一个变量,变量a的值为6,所以结果输出6,本题答案为A。
# 6.以下说法中,错误的是?(选择一项)
**A.**定时器中的上下文是window
**B.**在全局下直接调用函数,函数里面的上下文是window
**C.**事件处理函数中的上下文是绑定事件的元素
**D.**对象方法中的上下文是这个对象自身
本题考查上下文的规则。
定时器中的上下文是window,A说法正确。
在全局下直接调用函数,函数里面的上下文是window,B说法正确。
事件处理函数中的上下文是绑定事件的元素,C说法正确。
对象的方法中,上下文不一定是这个对象自身,要看如何调用的。如果是对象.方法名()方式调用的,那么指向的是对象自身。如果是获取到方法赋值给一个全局变量,然后调用全局变量,此时指向的是window,D说法错误,所以本题答案为D。
# 7.补充哪一个选项的代码,可以让如下代码输出15?(选择两项)
**A.**obj1.call(this,this.a,this.b)
**B.**obj1.call(this,[this.a,this.b])
**C.**obj1.apply(this,this.a,this.b)
**D.**obj1.apply(this,[this.a,this.b])
本题考查call和apply的使用。
call和apply用法相似,第一个参数用来指定上下文。区别在于后面的参数:
call要把传递的参数,直接用逗号一个一个隔开,而apply要把传递的参数,使用数组包裹起来。B中,call的第二个参数是传递了一个数组错误,正确的应该是A中直接把参数隔开。C中,apply的后两个参数没有使用数组包裹错误,正确的应该是D中把后两个参数放在一个数组中。
所以本题答案为AD。
# 8.下面的代码运行结果是?(选择一项)
A.-55
**B.**55
**C.**0
**D.**NaN
本题考查min()方法。
min()返回指定的数组中最小的那个数字,如果参数中包含不能转换成数字的非数字值,则返回NaN。本题代码中,字符串"a"不能转换为数字,所以答案为D。
# 9.关于Math.random()方法,下列说法正确的是?(选择一项)
**A.**该方法返回的是一个大于0并且小于1的随机数
**B.**该方法返回的是一个大于0并且小于1的整数
**C.**该方法返回的是一个大于等于0并且小于1的随机数
**D.**该方法返回的是一个大于等于0并且小于1的整数
参考解析:
本题考查Math.random()方法。
该方法返回的是一个大于等于0并且小于1的随机数,不是整数。
所以本题正确答案为C
# 10.下列选项关于date对象的说法正确的是?(选择两项)
**A.**getDate()方法返回一个月中的某一天
**B.**getDay()方法返回一个月中的某一天
**C.**getTime()方法返回一天中的某个时间
**D.**getTime()方法返回1970年1月1日至今的毫秒数
本题考查date对象的方法。
getDate()对象返回一个月中的某一天;
getDay()对象返回一周中的某一天;
getTime()返回1970年1月1日至今的毫秒数;
所以本题答案为AD。
# 11.补充题干中的代码,以便获取到今天是本月中的那一天?(选择一项)
**A.**date.getDate()
**B.**date.getDay()
**C.**date.getTime()
**D.**date
本题考查date对象的方法。
getDate()对象返回一个月中的某一天;
getDay()对象返回一周中的某一天;
getTime()放回1970年1月1日至今的毫秒数。
所以本题答案为A。
# 12.补充题干中的代码,以便获取到现在的月份?(选择一项)
**A.**date.getMonth()
**B.**date. getMonth()-1
**C.**date. getMonth()+1
**D.**date. getMonth()+2
本题考查date对象的方法。
getMonth()方法返回表示月份的数字,返回值是0(一月)到11(十二月)之间的一个整数。例如获取9月份,返回的是数字8,所以要在返回的数字上加1,即date. getMonth()+1。
所以本题答案为C。
← 13-BOM 15-Js阶段测试组卷 →







