JavaScript对象的练习题

JavaScript everyinch 8365℃ 0评论

一、判断题

  • 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对象的练习题

喜欢 (19)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 判断,操作有有答案吗
    1112023-04-02 06:36 回复
'; } if( dopt('d_footcode_b') ) echo dopt('d_footcode'); ?>