JS搜狐面试题分析
发布时间 - 2026-01-10 21:53:20 点击率:次本文实例讲述了几道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程序设计有所帮助。
# JS
# 搜狐
# 面试题
# 详解JS中的this、apply、call、bind(经典面试题)
# 关于javascript作用域的常见面试题分享
# 10道典型的JavaScript面试题
# 80%应聘者都不及格的JS面试题
# Javascript前端经典的面试题及答案
# 一道面试题引发的对javascript类型转换的思考
# JavaScript中最常见的三个面试题解析
# JavaScript面试题(指针、帽子和女朋友)
# 关于js原型的面试题讲解
# JavaScript面试题大全(推荐)
# AngularJS 面试题集锦
# js前端面试题及答案整理(一)
# 14 个折磨人的 JavaScript 面试题
# JS面试题---关于算法台阶的问题
# 一道优雅面试题分析js中fn()和return fn()的区别
# 一道关于JavaScript变量作用域的面试题
# 一道常被人轻视的web前端常见面试题(JS)
# 最新Javascript程序员面试试题和解题方法
# 遍历
# 小红
# 小明
# 第一个
# 第二个
# 让它
# 错误信息
# 真多
# 的是
# 有个
# 相关内容
# 让他
# 都要
# 就不
# 要在
# 数据结构
# 给大家
# 还需要
# 一个叫
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
详解jQuery中基本的动画方法
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
如何在宝塔面板创建新站点?
如何在建站之星网店版论坛获取技术支持?
Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理
如何快速搭建安全的FTP站点?
Laravel如何配置和使用缓存?(Redis代码示例)
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
Laravel如何使用Livewire构建动态组件?(入门代码)
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
如何在IIS管理器中快速创建并配置网站?
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
Laravel如何处理表单验证?(Requests代码示例)
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
如何实现javascript表单验证_正则表达式有哪些实用技巧
香港服务器WordPress建站指南:SEO优化与高效部署策略
如何挑选高效建站主机与优质域名?
高端建站如何打造兼具美学与转化的品牌官网?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
iOS正则表达式验证手机号、邮箱、身份证号等
Android Socket接口实现即时通讯实例代码
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
香港服务器选型指南:免备案配置与高效建站方案解析
公司门户网站制作流程,华为官网怎么做?
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
Laravel如何为API编写文档_Laravel API文档生成与维护方法
java ZXing生成二维码及条码实例分享
如何快速配置高效服务器建站软件?
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
网易LOFTER官网链接 老福特网页版登录地址
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
Linux系统运维自动化项目教程_Ansible批量管理实战
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
Laravel中的withCount方法怎么高效统计关联模型数量
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
SQL查询语句优化的实用方法总结
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
东莞市网站制作公司有哪些,东莞找工作用什么网站好?

