# 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.以下哪种方法可以在控制台输出“小课”?选择两项

BH7kk9.png (opens new window)

**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. 以下代码中,弹出的结果依次为?(选择一项)

BH7bjK.png (opens new window)

**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.以下代码,输出的结果是?(选择一项)

BHbFR1.png (opens new window)

**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.以下代码的输出结果为?(选择一项)

BHbgwF.png (opens new window)

**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?(选择两项)

BHqd0O.png (opens new window)

**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.下面的代码运行结果是?(选择一项)

BHqOBT.png (opens new window)

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.补充题干中的代码,以便获取到今天是本月中的那一天?(选择一项)

BHLgPJ.png (opens new window)

**A.**date.getDate()

**B.**date.getDay()

**C.**date.getTime()

**D.**date

本题考查date对象的方法。

getDate()对象返回一个月中的某一天;

getDay()对象返回一周中的某一天;

getTime()放回1970年1月1日至今的毫秒数。

所以本题答案为A。

# 12.补充题干中的代码,以便获取到现在的月份?(选择一项)

BHOuoF.png (opens new window)

**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。