zoukankan      html  css  js  c++  java
  • 前端攻城狮学习笔记五:继承、原型、setInterval、数组去重

      这是淘宝UED招聘题中的两道JavaScript题目。

    题目一要求

      小贤是一条可爱的小狗(Dog),它的叫声很好听(wow),每次看到主人的时候就会乖乖叫一声(yelp)。从这段描述可以得到以下对象:

    function Dog() {
           this.wow = function() {
                   alert(’Wow’);
          }
           this.yelp = function() {
                  this.wow();
           }
    }

      小芒和小贤一样,原来也是一条可爱的小狗,可是突然有一天疯了(MadDog),一看到人就会每隔半秒叫一声(wow)地不停叫唤(yelp)。请根据描述,按示例的形式用代码来实现(提示关键字: 继承,原型,setInterval)。

    题目一分析

      没什么好分析的,原型方式继承,用setInterval进行循环。代码如下:

    function MadDog(){
    }
    
    MadDog.prototype=new Dog();
    
    MadDog.prototype.yelp=function(){
        var self=this;
        setInterval(function(){
            self.wow();
        },500);
    }

      这里要注意的是闭包的使用。

    题目二要求

      请给Array本地对象增加一个原型方法,它的用途是删除数组条目中重复的条目(可能有多个),返回值是一个被删除的条目的数组。

    题目二分析

      这道题考查的就是基本的算法了,最简单也是最容易想到的就是用双重循环进行判断:

    Array.prototype.distinct = function() {
        var ret = [];
        for (var i = 0, l = this.length; i < l - 1; i++) {
            for (var j = i + 1; j < l; j++) {
                if (this[i] == this[j]) {
                    ret.push(this.splice(j, 1)[0]);
                    l = this.length;
    j--; } } }
    return ret; };

      这种方法效率不高,另外想到的一种方案就是用空间换时间,就是循环一次,在循环过程中用一个临时变量把不重复的存起来,然后判断当前元素是否是重复的,再进行处理:

    Array.prototype.distinct2 = function() {
        var ret = [],
            tempArr = {};
        for (var i = 0; i < this.length; i++) {
            if (tempArr[this[i] + 1]) {
                ret.push(this[i]);
                this.splice(i, 1);
                i--;
                continue;
            }
            tempArr[this[i] + 1] = true;
        }
        tempArr = null;
        return ret;
    };

      这里买个小关子,代码里有个this[i]+1,有人知道为什么要+1吗?

    小结

      这两题考察的内容都比较基础,主要考察了继承、原型、setInterval、闭包、基本算法等。期待高手给出不同方案。

  • 相关阅读:
    SQL如何对时间戳字段按日期排序
    PHP书写SQL换行
    SQL修改字段
    SQL新增一个字段
    HTML加JS实现点击切换“观看”与“收起”效果切换
    盐:深沉的慢动作 让电影“支离破碎”
    笔:最终会走在一起吗
    笔:那个下午
    关于国内安装百夫长开源网站统计进度过慢的问题
    Java Web系列之JDBC
  • 原文地址:https://www.cnblogs.com/jscode/p/2579326.html
Copyright © 2011-2022 走看看