本文实例讲述了几道JS搜狐面试题。分享给大家供大家参考,具体如下:
一、实现一个遍历数组或对象里所有成员的迭代器。
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); }
【思路分析】
1.首先判断传进来的是数组还是对象,用到instanceof,typeof和instanceof都可以用来判断js变量类型,用法区别
typeof(obj) //typeof会返回一个基本数据类型
obj instanceof Array //instanceof一般是用来验证一个对象是否属于某类
注:typeof遇到null,数组,对象都会返回object类型
var each = function(obj, fn){ if(obj instanceof Array){ } else if(obj instanceof Object){ } };
2.遍历数组和遍历对象的区别
遍历数组:
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; //表示跳过并继续遍历 else if( 8 == this ) return false; //表示停止遍历 console.log(o + ": \"" + this + "\""); });
如果直接for循环,那会输出数组所有元素,现在有个each函数,应该让他指向obj中的元素(即改变this指向,让this代表obj[i])
fn.call(obj[i],i+1); //fn是each的第二个参数,让这个函数指向obj中的元素,第一个参数o,让让它传值i+1
仅仅这样会输出4,5,7,8,9,10,11,12,所以还需要限定让它等于8的时候跳出整个循环
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); //第一个参数v(对象值),第二个n(对象索引) } }
注:obj instanceof Object要在obj instanceof Array之后,因为数组属于对象,Object在前面的话,后面的判断就不执行了
二、实现一个叫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); }
思路分析:
1.先来一个构造函数
Man=function(info){ };
2.
var me = Man({ fullname: "小红" }); var she = new Man({ fullname: "小红" });
更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
搜狐 1.ViewModel的作用及原理 2.ViewModel被复用原理 3.LiveData的作用及原理 4.LiveData观察者模式的观察者和被观察者 5.LiveData本身观测了谁 6.DataBinding的理解,特点,优点 7.DataBinding在项目中的作用 8.优化做过哪些 9.如何获取卡顿优化具体的方法 10.内存优化 11.AndroidStudio的性能优化工具 12
刚刚答完题,趁热乎!!! 选择题9个,在2019年和2021年的笔试题里抽的 填空题6个,也是往年题里的 简答题5个,其中方案问答题2个,SQL编写题3个(是leetcode的原题,刷到过) 真正困难的还是问答题啊#2024秋季招聘##数据分析面试笔试##搜狐畅游2023秋招笔试##2023搜狐畅游游戏数据分析师笔试题#
真的很简单但是会问点前端和linux问题,感觉应该不拿这个筛人吧(虽然邮件说是进面唯一标准 单选/多选-java和linux命令还有js css html啥的 编程-移动零 问答-一句话筛选出成绩均大于75分的学生名字 🕒岗位 25java转正实习
3点的面试等到3:30面上,然后十分钟就结束了 我发现秋招后期基本没遇到八股文问题了 1.自我介绍 2.实习内容 3.项目内容 4.是否玩过游戏 5.问工作地能否接受 6.然后面试官介绍工作内容 #校招##秋招#
考试题型: 基础能力-单选题 10 道, 基础能力-资料分析题一 5 道, 基础能力-资料分析题二 5 道, 专业能力-单选题 10 道, 专业能力-多选题 5 道, 专业能力-填空题 5 道, 专业能力-问答题 2 道, 专业能力-编程题 2 道 分玩具 低保(16.67%) m = int(input()) n = list(map(int, input().split())) n_sum
搜狐畅游JAVA校招 12.1一面_笔经面经_牛客网 (nowcoder.com) 和上面这位兄弟的很接近