国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

JS搜狐面試題分析

2024-05-06 16:33:47
字體:
來源:轉載
供稿:網(wǎng)友

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

一、實現(xiàn)一個遍歷數(shù)組或對象里所有成員的迭代器。

var each = function(obj, fn){    //+++++++++++答題區(qū)域+++++++++++    //+++++++++++答題結束+++++++++++};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í)行結果]------    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í)行結果]------    a: "4"    c: "6"    ------------------*/}catch(e){    console.error("執(zhí)行出錯,錯誤信息: " + e);}

【思路分析】

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

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

obj instanceof Array //instanceof一般是用來驗證一個對象是否屬于某類

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

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

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

遍歷數(shù)組:

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

遍歷對象:

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

3.分析結果

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

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

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

僅僅這樣會輸出4,5,7,8,9,10,11,12,所以還需要限定讓它等于8的時候跳出整個循環(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;    }  }}

同理,遍歷對象

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

注:obj instanceof Object要在obj instanceof Array之后,因為數(shù)組屬于對象,Object在前面的話,后面的判斷就不執(zhí)行了

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

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

思路分析:

1.先來一個構造函數(shù)

Man=function(info){};

2.

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

希望本文所述對大家JavaScript程序設計有所幫助。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 买车| 双辽市| 郴州市| 嘉义市| 陆丰市| 昌宁县| 公主岭市| 盘山县| 个旧市| 阿拉善左旗| 沂南县| 泸定县| 凭祥市| 唐河县| 甘孜县| 玉山县| 安达市| 中江县| 金山区| 乌拉特中旗| 龙陵县| 睢宁县| 祁门县| 定西市| 宁海县| 神木县| 崇信县| 广饶县| 县级市| 基隆市| 霸州市| 闻喜县| 前郭尔| 普兰县| 渝北区| 宕昌县| 虎林市| 靖安县| 吉首市| 汕尾市| 台前县|