一、判断题
- 1.在JavaScript中,只能使用预定义对象,而不能使用自定义对象。
- 2.在JavaScript中,当使用new运算符创建一个对象变量后,一定要使用delete运算符把创建的对象变量撤销。
- 3.要使用任何一个JavaScript对象的方法和属性,必须先使用new运算符创建它。
- 4.在调用Date对象的属性和方法之前,必须先使用new运算符创建一个Date对象。
- 5.不能使用普通的for循环语句遍历数组中的所有元素。
二、单选题
- 1.创建对象直接量正确的语法是( )
A. var point = { x:0; y:0 };
B. var point = [ x:0; y:0 ];
C. var point = { x:0, y:0 };
D. var point = [ x:0,y:0 ];
C - 2.关于对象原型的表述错误的是( )
A. 通过new Array()创建的对象的原型就是Array.prototype
B. 通过new Date()创建的对象的原型就是Date.prototype
C. 不能通过Object.prototype获得对原型对象的引用
D. 通过关键字new和构造函数调用创建的对象的原型就是构造函数的prototype属性的值
C - 3.如果想创建一个普通的空对象,类似于{}或new Object()的方法是( )
A. Object.create(null)
B. Object.create(Object.prototype)
C. Object.create()
D. Object.create(undefined)
B - 4.在JavaScript中,通过下面的_____运算符访问对象的属性和方法。
A. 加运算符(+)
B. 点运算符(.)
C. 乘运算符(*)
D. 不能访问
B - 5.获取属性的值,正确的语法是( )
A. object->property
B. object[“property”]
C. object=>property
D. object{“property”}
B - 6.查询book对象的subtitle属性,以及subtitle的length属性。如果不存在不会报错的更为简练的语法是( )
A. var title = book.subtitle;
B. book.subtitle.length;
C. if (book) { if (book.subtitle) len = book.subtitle.length;}
D. var len = book && book.subtitle && book.subtitle.length;
D - 7.如果有对象 o = {x:1},则对下面代码解释正确的是( )
A. delete o.x; //删除x,返回false
B. delete o.x; //什么都没做(x已经不存在了),返回false
C. delete o.toString; //什么也没做(toString是继承来的),返回true
D. delete 1; //无意义,返回false
C - 8.下面的方法,不能判断某个属性是否存在于某个对象中的方法是( )
A. in运算符
B. instanceOf运算符
C. hasOwnPreperty()方法
D. propertyIsEnumerable()方法
B - 9.如果有对象 o = { x: 1 },则o.hasOwnProperty(“toString”);返回( )
A. NaN
B. true
C. undefined
D. false
D - 10.有对象:var o = Object.create({y:2}); 语句 o.propertyIsEnumerable(“y”);的输出为( )
A. NaN
B. false
C. undefined
D. true
B - 11.JavaScript对象getter方法的正确语法是( )
A. get { /* 这里是函数体 */ }
B. get functionName() { /* 这里是函数体 */ }
C. getter { /* 这里是函数体 */ }
D. get functionName { /* 这里是函数体 */ }
B - 12.存取器属性的4个特性,不包括的特性是( )
A. 读取(get )
B. 写入(set)
C. 可枚举性
D. 可继承性
D - 13.要想设置属性的特性,或者想让新建属性具有某种特性,则需要调用的方法是( )
A. Object.defineProperty()
B. Object.define()
C. Object.create()
D. Object.assign()
A - 14.对代码 “var x=myhouse.kitchen; ” 的哪种说明正确?
A. 将字符串”myhouse.kitchen”赋值给变量x。
B. 将myhouse和kitchen的值相加之和赋给对象x。
C. 假设myhouse对象存在,它将myhouse对象的kitchen属性值赋给变量x。
D. 假设myhouse对象存在,它将kitchen对象的myhouse属性值赋给变量x.
C - 15.创建字符串对象有哪两种方法?
A. 使用new运算符创建String对象和直接将字符串赋给变量。
B. 使用new运算符创建Array对象和直接将字符串赋给变量。
C. 使用new运算符创建Number对象和直接将字符串赋给变量。
D. 使用new运算符创建Date对象和直接将字符串赋给变量。
A - 16.在ECMAScript 5中,查询对象原型的方法是( )
A. o.constructor.prototype
B. Object.getPrototypeOf()
C. isPrototypeOf()方法
D. Object.defineProperty()方法
B - 17.将对象设置为不可扩展,还可以将它自有的所有数据属性设置为只读的方法是( )
A. Object.preventExtensions()方法
B. Object.seal()方法
C. Object.freeze()方法
D. Object.isSealed()方法
C - 18.不属于Object.prototype里的对象方法的是( )
A. toLocaleString()方法
B. toSource()方法
C. toJSON()方法
D. vafueOf()方法
B
三、程序输出
- 1.解释下面的代码:
var book = {
“main title”: “Homer Simpson”,
“sub-title”: 34,
“for”: true,
“author”:{
firstname: “David”,
surname: “Tom”
}
}; - 2.解释下面的代码:
var o = { x: 1 }
“x” in o;
“y” in o;
“toString” in o; - var o = { x: 1 }
o.hasOwnProperty(“x”);
o.hasOwnProperty(“y”);
o.hasOwnProperty(“toString”); - var o = inherit({ y: 2 });
o.x = 1;
o.propertyIsEnumerable(“x”);
o.propertyIsEnumerable(“y”); - 3.解释下面的代码:
for(p in o) {
if (!o.hasOwnProperty(p)) continue;
}
for(p in o) {
if (typeof o[p] === “function”) continue;
} - 4.解释下面的代码:
function extend(o, p){
for (prop in p){
o[prop] = p[prop];
}
return o;
} - function merge(o, p) {
for(prop in p) {
if (o.hasOwnProperty[prop]) continue;
o[prop] = p[prop];
}
return o;
} - function restrict(o, p) {
for(prop in o) {
if (!(prop in p)) delete o[prop];
}
return o;
} - function subtract(o, p) {
for(prop in p) {
delete o[prop];
}
return o;
} - 5.解释下面的代码
var p = Object.defineProperties({}, {
x: { value: 1, writable: true, enumerable:true, configurable:true },
y: { value: 1, writable: true, enumerable:true, configurable:true },
r: {
get: function() {
return Math.sqrt(this.x*this.x + this.y*this.y) },enumerable:true,configurable:true
}
});
四、综合题
- 1.编写程序,根据用户输入的数值,计算其平方、平方根和自然对数。
- 2.使用Math对象的random()方法编制一个产生0~100之间(含0,100)的随机整数的函数。
- 3.设计一个页面,在页面上显示信息“现在是XXXX年XX月XX日Xx点XX分XX秒(星期X),欢迎您的到访!“。
- 4.编制一个从字符串中收集数字字符(”0″‘,”1″,…”9″)的函数CollectDigits(s),它从字符串s中顺序取出数字,并且合并为一个独立的字符串作为函数的返回值。例如函数调用CollectDigits(“1abc23def4″)的返回值是字符串”1234″。
- 5.编制一个将两个字符串交叉合并的函数Merge(s1,s2),例如Merge(“123”,”abc”)的返回结果是”1a2b3c”,如果两个字符串的长度不同,那么就将多余部分直接合并到结果字符串的末尾,如Merge(“123456″,”abc”)的返回结果是”1a2b3c456”。
- 6.设计一个程序,它(使用一个数组)接收用户输入的7门课程的成绩,然后在页面上显示其总成绩和平均分,并列出小于60的成绩。
- 7.斐波纳契(Fibonacci)数列的第一项是1,第二项是1,以后各项都是前两项的和。请按逆序在页面中显示斐波纳契数列前40项的值(即,如果计算出来的数列是1,1,2,3,5,8…,那么显示的顺序是…,8,5,3,2,1,1),并要求每行显示6个数。
- 8.设计一个函数DayOfYear(d),它接必一个日期参数d,返回一个该日期是所在年份的第几天,如DayOfYear(2000,2,8)的返回值是39.
(提示:①定义一个数组months=new Array(31,28,31,30,31,30,31,31,30,31,30,31)记录每个月少天:②定义一个辅助函数IsLeapYear(y)判定某个年份是否闰年,以确定2月份的天数是28还是29。) - 9.编写inherit()函数,它返回了一个继承自原型对象p的属性的新对象,这里使用ECMAScript 5中的Object.create()函数(如果存在的话),如果不存在Object.create(),则退化使用其他方法
转载请注明:陈童的博客 » JavaScript对象的练习题