破洛洛文章簡介:Javascript面試題.
要求:
1、只能在指定的位置填寫自己的代碼,本文件裡的其他代碼不能修改
2、所有題目都不允許添加全局變量名
3、本文件應該能在firebug的console裡正常執行,並輸出結果
4、代碼最優化,效率最高
5、代碼注釋明確
練習1:
實現一個遍歷數組或對象裡所有成員的迭代器。
var each = function(obj, fn){
//+++++++++++答題區域+++++++++++
//+++++++++++答題結束+++++++++++
};
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();
/*------[執行結果]------
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();
/*------[執行結果]------
a: "4"
c: "6"
------------------*/
}catch(e){
console.error("執行出錯,錯誤信息: " + e);
}
練習2:
實現一個叫Man的類,包含attr, words, say三個方法。
var Man;
//+++++++++++答題區域+++++++++++
//+++++++++++答題結束+++++++++++
try{
var me = Man({ fullname: "小紅" });
var she = new Man({ fullname: "小紅" });
console.group();
console.info("我的名字是:" + me.attr("fullname") + "\n我的性別是:" + me.attr("gender"));
console.groupEnd();
/*------[執行結果]------
我的名字是:小紅
我的性別是:<用戶未輸入>
------------------*/
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();
/*------[執行結果]------
我的名字是:小明
我的性別是:男
------------------*/
console.group();
console.info("我的名字是:" + she.attr("fullname") + "\n我的性別是:" + she.attr("gender"));
console.groupEnd();
/*------[執行結果]------
我的名字是:小紅
我的性別是:女
------------------*/
me.attr({
"words-limit": 3,
"words-emote": "微笑"
});
me.words("我喜歡看視頻。");
me.words("我們的辦公室太漂亮了。");
me.words("視頻裡美女真多!");
me.words("我平時都看優酷!");
console.group();
console.log(me.say());
/*------[執行結果]------
小明微笑:"我喜歡看視頻。我們的辦公室太漂亮了。視頻裡美女真多!"
------------------*/
me.attr({
"words-limit": 2,
"words-emote": "喊"
});
console.log(me.say());
console.groupEnd();
/*------[執行結果]------
小明喊:"我喜歡看視頻。我們的辦公室太漂亮了。"
------------------*/
}catch(e){
console.error("執行出錯,錯誤信息: " + e);
}
練習3:
實現一個URI解析方法,把url裡#之後的參數解析成指定的數據結構。
function urlParser(s){
//+++++++++++答題區域+++++++++++
//+++++++++++答題結束+++++++++++
}
try{
var url1 = "http://www.abc.com/m/s/#page/2/?type=latest_videos&page_size=20";
var url2 = "http://www.abc.com/m/s/#type=latest_videos&page_size=20";
var url3 = "http://www.abc.com/m/s/#page?type=latest_videos&page_size=20";
console.group();
console.info( urlParser(url1) );
console.info( urlParser(url2) );
console.info( urlParser(url3) );
console.groupEnd();
/*------[執行結果]------
["page", "2", { "type": "latest_videos", "page_size": 20 }]
[{ "type": "latest_videos", "page_size": 20 }]
["page", { "type": "latest_videos", "page_size": 20 }]
------------------*/
}catch(e){
console.error("執行出錯,錯誤信息: " + e);
}