欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS搜狐面試題分析

 更新時(shí)間:2016年12月16日 14:50:22   作者:鬼畜十三  
這篇文章主要介紹了JS搜狐面試題,涉及javascript數(shù)組、字符串及面向?qū)ο蟪绦蛟O(shè)計(jì)相關(guān)技巧,需要的朋友可以參考下

本文實(shí)例講述了幾道JS搜狐面試題。分享給大家供大家參考,具體如下:

一、實(shí)現(xiàn)一個(gè)遍歷數(shù)組或?qū)ο罄锼谐蓡T的迭代器。

var each = function(obj, fn){
    //+++++++++++答題區(qū)域+++++++++++
    //+++++++++++答題結(jié)束+++++++++++
};
try{
    var data1 = [4,5,6,7,8,9,10,11,12];
    var data2 = {
        "a": 4,
        "b": 5,
        "c": 6
    };
    console.group(data1);
    each(data1, function(o){
        if( 6 == this )
            return true;
        else if( 8 == this )
            return false;
        console.log(o + ": \"" + this + "\"");
    });
    console.groupEnd();
    /*------[執(zhí)行結(jié)果]------
    1: "4"
    2: "5"
    4: "7"
    ------------------*/
    console.group(data2);
    each(data2, function(v, n){
        if( 5 == this )
            return true;
        console.log(n + ": \"" + v + "\"");
    });
    console.groupEnd();
    /*------[執(zhí)行結(jié)果]------
    a: "4"
    c: "6"
    ------------------*/
}catch(e){
    console.error("執(zhí)行出錯(cuò),錯(cuò)誤信息: " + e);
}

【思路分析】

1.首先判斷傳進(jìn)來(lái)的是數(shù)組還是對(duì)象,用到instanceof,typeof和instanceof都可以用來(lái)判斷js變量類型,用法區(qū)別

typeof(obj) //typeof會(huì)返回一個(gè)基本數(shù)據(jù)類型

obj instanceof Array //instanceof一般是用來(lái)驗(yàn)證一個(gè)對(duì)象是否屬于某類

注:typeof遇到null,數(shù)組,對(duì)象都會(huì)返回object類型

var each = function(obj, fn){
  if(obj instanceof Array){
  }
  else if(obj instanceof Object){
  }
};

2.遍歷數(shù)組和遍歷對(duì)象的區(qū)別

遍歷數(shù)組:

for(var i=0,j=array.length;i<j;i++){
  alert(array[i]);
}

遍歷對(duì)象:

for(var e in data){
  alert(data[e]);
}

3.分析結(jié)果

each(data1, function(o){
  if( 6 == this )
    return true;      //表示跳過(guò)并繼續(xù)遍歷
  else if( 8 == this )
    return false;     //表示停止遍歷
  console.log(o + ": \"" + this + "\"");
});

如果直接for循環(huán),那會(huì)輸出數(shù)組所有元素,現(xiàn)在有個(gè)each函數(shù),應(yīng)該讓他指向obj中的元素(即改變this指向,讓this代表obj[i])

fn.call(obj[i],i+1); //fn是each的第二個(gè)參數(shù),讓這個(gè)函數(shù)指向obj中的元素,第一個(gè)參數(shù)o,讓讓它傳值i+1

僅僅這樣會(huì)輸出4,5,7,8,9,10,11,12,所以還需要限定讓它等于8的時(shí)候跳出整個(gè)循環(huán)

if(obj instanceof Array){
  for(var i=0,j=obj.length;i<j;i++){
    var temp=fn.call(obj[i],i+1);
    if(temp===false){    //===值和類型都要等,==只是值相同null==false
      return;
    }
  }
}

同理,遍歷對(duì)象

else if(obj instanceof Object){
  for(var e in obj){
    fn.call(obj[e],obj[e],e);    //第一個(gè)參數(shù)v(對(duì)象值),第二個(gè)n(對(duì)象索引)
  }
}

注:obj instanceof Object要在obj instanceof Array之后,因?yàn)閿?shù)組屬于對(duì)象,Object在前面的話,后面的判斷就不執(zhí)行了

二、實(shí)現(xiàn)一個(gè)叫Man的類,包含attr, words, say三個(gè)方法。

var Man;
//+++++++++++答題區(qū)域+++++++++++
//+++++++++++答題結(jié)束+++++++++++
try{
    var me = Man({ fullname: "小紅" });
    var she = new Man({ fullname: "小紅" });
    console.group();
    console.info("我的名字是:" + me.attr("fullname") + "\n我的性別是:" + me.attr("gender"));
    console.groupEnd();
    /*------[執(zhí)行結(jié)果]------
    我的名字是:小紅
    我的性別是:<用戶未輸入>
    ------------------*/
    me.attr("fullname", "小明");
    me.attr("gender", "男");
    me.fullname = "廢柴";
    me.gender = "人妖";
    she.attr("gender", "女");
    console.group();
    console.info("我的名字是:" + me.attr("fullname") + "\n我的性別是:" + me.attr("gender"));
    console.groupEnd();
    /*------[執(zhí)行結(jié)果]------
    我的名字是:小明
    我的性別是:男
    ------------------*/
    console.group();
    console.info("我的名字是:" + she.attr("fullname") + "\n我的性別是:" + she.attr("gender"));
    console.groupEnd();
    /*------[執(zhí)行結(jié)果]------
    我的名字是:小紅
    我的性別是:女
    ------------------*/
    me.attr({
        "words-limit": 3,
        "words-emote": "微笑"
    });
    me.words("我喜歡看視頻。");
    me.words("我們的辦公室太漂亮了。");
    me.words("視頻里美女真多!");
    me.words("我平時(shí)都看優(yōu)酷!");
    console.group();
    console.log(me.say());
    /*------[執(zhí)行結(jié)果]------
    小明微笑:"我喜歡看視頻。我們的辦公室太漂亮了。視頻里美女真多!"
    ------------------*/
    me.attr({
        "words-limit": 2,
        "words-emote": "喊"
    });
    console.log(me.say());
    console.groupEnd();
    /*------[執(zhí)行結(jié)果]------
    小明喊:"我喜歡看視頻。我們的辦公室太漂亮了。"
    ------------------*/
}catch(e){
    console.error("執(zhí)行出錯(cuò),錯(cuò)誤信息: " + e);
}

思路分析:

1.先來(lái)一個(gè)構(gòu)造函數(shù)

Man=function(info){
};

2.

var me = Man({ fullname: "小紅" });
var she = new Man({ fullname: "小紅" });

更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript中json操作技巧總結(jié)》、《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • JsChart組件使用詳解

    JsChart組件使用詳解

    JSChart能夠在網(wǎng)頁(yè)上生成圖標(biāo),常用于統(tǒng)計(jì)信息,十分好用的一個(gè)JS組件。這篇文章主要介紹了JsChart組件使用詳解,需要的朋友可以參考下
    2018-03-03
  • JavaScript中的View-Model使用介紹

    JavaScript中的View-Model使用介紹

    這是一個(gè)十分常見(jiàn)的微博列表頁(yè)面,類似于新浪微博。上周末,在心無(wú)旁騖情況下,一共用了5個(gè)對(duì)象,產(chǎn)出400行代碼,實(shí)踐出一種代碼組織模式。
    2011-08-08
  • jQuery實(shí)現(xiàn)騰訊信用界面(自制刻度尺)樣式

    jQuery實(shí)現(xiàn)騰訊信用界面(自制刻度尺)樣式

    這篇文章主要介紹了jQuery實(shí)現(xiàn)騰訊信用界面(自制刻度尺)樣式,下文還總結(jié)了關(guān)于jquery中extend的方法,需要的朋友可以參考下
    2017-08-08
  • js截取函數(shù)(indexOf,join等)

    js截取函數(shù)(indexOf,join等)

    下面是js中截取字符串經(jīng)常會(huì)用到的一些函數(shù),這里每個(gè)函數(shù)都給出了例子,學(xué)習(xí)的朋友可以參考下。
    2010-09-09
  • 最佳的addEvent事件綁定是怎樣誕生的

    最佳的addEvent事件綁定是怎樣誕生的

    IE的 JScript 存在內(nèi)存泄露的bug 想必大家都清楚或者有耳聞了。這是由于IE的內(nèi)存回收管理器的一個(gè)設(shè)計(jì)錯(cuò)誤導(dǎo)致的
    2011-10-10
  • 原生js獲取left值和top值的三種方法

    原生js獲取left值和top值的三種方法

    下面小編就為大家?guī)?lái)一篇原生js獲取left值和top值的三種方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • javascript中的parseInt和parseFloat區(qū)別

    javascript中的parseInt和parseFloat區(qū)別

    這篇文章用簡(jiǎn)單的小例子演示了parseInt和parseFloat區(qū)別,有需要的朋友可以參考一下
    2013-07-07
  • JavaScript?ECharts可視化圖表庫(kù)

    JavaScript?ECharts可視化圖表庫(kù)

    這篇文章主要介紹了JavaScript?ECharts可視化圖表庫(kù),ECharts是一款基于JavaScript的數(shù)據(jù)可視化圖表庫(kù),提供直觀,生動(dòng),可交互,可個(gè)性化定制的數(shù)據(jù)可視化圖表
    2023-01-01
  • JS判斷瀏覽器是否安裝flash插件的簡(jiǎn)單方法

    JS判斷瀏覽器是否安裝flash插件的簡(jiǎn)單方法

    下面小編就為大家?guī)?lái)一篇JS判斷瀏覽器是否安裝flash插件的簡(jiǎn)單方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • 一個(gè)特帥的展示圖片的js+css

    一個(gè)特帥的展示圖片的js+css

    一個(gè)特帥的展示圖片的js+css...
    2006-08-08

最新評(píng)論