当前位置:首页 » 网页前端 » 前端面试原型链回答
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

前端面试原型链回答

发布时间: 2022-07-31 09:20:09

1. 前端工程师面试时被问到为什么要做前端时,怎么回答

我本人是个前端工程师,虽然现在也对php,nodejs等服务器端的东西有所涉猎,但最喜欢的还是前端这个职位所做的事情,所以要是我面试的话,我会回答:
自己很喜欢做前端,因为前端做出来的东西可以马上展现出来,可以给我带来最直接的成就感,不像后端做的大部分都是数据层面的东西,不能让客户老板和自己马上看到。而且这两年前端技术发展很快,功能越来越强大,所以做的时间越久,越感觉可挖掘的点很多,很有意思。

2. web前端工程师需要掌握哪些技术

1、开发语言

HTML发展历史有二十多年,历经多次版本更新,HTML5和CSS3的出现又是一次革新。有些人认为前端开发要掌握的技能简单,不就是网页制作嘛。其实不然,web前端需要掌握的核心语言HTML+CSS+JavaScript,JavaScript作为最难的语言之一,许多编程高手也不敢妄自菲薄自封精通。由于JavaScript与html的差异性,以及静态分开处理的一些好处。在大公司编写静态效果和动态效果往往是分开由不同的人完成的。小公司因为需要压缩成本,就需要每个人会的越多越好,如果你向往项目经理发展,能懂一两门后端语言,绝对是锦上添花。

2、浏览器兼容性

互联网目前主流浏览器有IE6/7/8/9,Firefox,Chrome,Opera,Safari,遨游,包括国内主流的搜狗,腾讯TT,360,the word等等;从内河上讲主要有IE的,遨游版IE,Safari,Firefox以及opera的,这些都是大家常见的,如果你身边有老网虫喜欢收藏浏览器,你翻翻他的硬盘,相信十几款肯定是有的。每种内核对代码的解析是不完全一样的,即使同样内核也可能存在很大差异,如IE和遨游版IE。不说非主流的浏览器,就主流的浏览器,要做到完全兼容,也并非易事,需要长时间的积累和测试,需要前端开发工程师对前端端开发的热爱和激情。

目前移动互联网的发展趋势也不容小觑,将慢慢占据互联网的主要份额。移动互联网最突出的好处是方便和及时,试想一下,走在某地风景很好,拍下来后自 动分享给各路好友,因此手机上的浏览器兼容也看刻不容缓,现在手机上的浏览器也是纷繁复杂,主流的UCWEB,safari,IE,3G门户的,以及 symbian低端机的“残缺儿童”,包括国外流行手机我们不知道的一些浏览器,更糟糕的是这些浏览器解析因为手机硬件的不同,每个浏览器得到的结果都是 完全不同的。

3.hack技术

由于不同的浏览器对CSS的解析认识不一样,因此会导致生成的页面效果不一样,这个时候就需要针对不同的浏览器写不同的CSS,这个过程叫CSS hack。虽然我们写代码都要求按照标准,不写hack代码,但实际工作中为了兼容主流浏览器,hack代码是免不了的,所以这也应该是每个前端开发人员 必备的技能。

4.业内标准

目前Web前端开发中提到最多的就是W3C标准,这是一系列标准的集合,代表了互联网发展的方向,也代表了前端开发的一种信仰。写的代码都要100%通过标准验证,为通过标准验证而感到自豪,会有效推动互联网的快速发展。

5.开发工具

目前比较流行的是Dreamweaver, 其曾经风靡一时,到现在也没有退出历史舞台,证明DW还是有很大优势的,尤其是针对初学者,其强大的提示功能可以帮助我们很快的熟悉并掌握网页布局,但现 在更提倡的是纯手写代码,既体现技能方面的卓越,也可有效避免使用DW等工具产生的冗余代码。此外再掌握一些photoshop技能,即使没有美工,也能 简单处理一些图像。

小结,掌握以上技能,可以说你是一个合格的前端开发人员,能够参与到一个大的项目中,或者自己独立写出一个网页。虽然这看起来和网页制作设计差不多,从效果上来看,都是制作网页的,但实际上,技术上所超出的已经是好几个档次的东西了。

3. 面试前端怎样回答比较好——你在昨天/本周学到了什么

虽然如今的面试五花八门,但面试是有规律的,很多公司面试的问题都是差不多的,求职者应对的要领也是类似的。下面先谈谈5大面试常见问题,然后再归纳一下面试的应对要领。

面试五大应对方法:

一、请做五分钟的面试自我介绍

招聘官让你做自我介绍,其实并不是那么真的想要从这里了解他们真正想要了解的。叫你谈谈自己,目的不出二个:一个是让面谈能从较轻松的气氛导入,另一个是看你会怎么说,看看你的表达能力。

因此,回答这个问题有个原则:

少谈不愉快的经验,少谈个人私事,多谈一些你的优点,不论是个性,嗜好,学历,经历,参加的社团等,当然你挑出来谈的优点和你应征的这份工作有某程度的关连,但你表达时最好过水无痕。

二、你为什么要应聘这份工作?

这个问题其实是在问,为什么你认为你有条件做好这份工作。因此回答这个问题,你要朝这个方向思考你不要简单的回答如“我对这个工作很感兴趣”或“贵公司知名度高,我非常愿意在这里服务”,因为你这样回答会让主考人员认为你还没清楚了解这个工作的性质,就冒然地说出自己的主张。

因此,回答这个问题,你要采取三个步骤:

1、陈述你认为这个工作性质是怎样的

2、请教主考人员,你对这个工作性质的描述是否正确,并让主考人员能补充说明

3、 说明你为什么能做好这份工作及为什么你对这份工作有兴趣.

面试常见问题三:你的工作目标是什么? 你五年后的职场目标是 什么?

这个问题是要了解你的职业生涯规划及工作抱负,公司的立场当然是希望找一个有计划,有抱负的员工,但你所谈的计划与抱负最好是公司有能力满足你的。

因此,回答这个问题,你可从你能贡献什么给公司的角度去发挥, 你可谈例如:我首先要对这个产业状况做深入的了解,在这个阶段我要深入学习掌握市场状况的各种方法,例如市场调查,客户需求调查,客户满意度调查,了解了 市场状况后,我希望有机会发挥我最有兴趣的行销知识,将来我希望有能力成为专业的行销人员,在行销的领域,替公司做一些贡献。

三、你有那些长处?

回答这个问题有三个原则.

第一个原则相信大家都知道,你可从你自己的价值观,个性上的持点,工作的态度等,选择几项和你应征的工作有正面关系的提出说明。

第二个原则是说明时不要仅停留在抽象的名词上,例如做事仔细,负责,有创意,人际关系良好等,你一定要想办法举出一,二件令人印象深刻的实例,只有在你举的实例打动了主考人员的心,你才能在这个问题上脱颖而出,得到正点.

第三个原则是能当场证明你述说的长处,例如你应征文案人员,你可拿出曾在报章,杂志发表过的作品,你可拿出一些证明文件,证明你曾当过那些社团活动的负责人等。

四、我们为什么要雇用你?

回答这个问题可从你的经历,教育,工作技能,人际关系,人格特性 ... 等方面, 例举你能对公司产生那些贡献,最重要的是你做这个工作时,你能替公司解决这个职务上可能发生的那些问题,例如我的个性很仔细,这个工作如果一时的粗心会造 成那些不利的影响,雇用我的话,这些可能的问题将不会产生,你用这种方式回答,一方面能让主考人员了解你是多么熟习这份工作,同时也告诉他们你能防止或解 决那些工作中可能发生的问题。

若你没有工作经验,你必须用很诚恳的态度告诉主考人员,你评估过你的知识及能力,确信自己能把这份工作做好,加上你是一位做任何事情都能在极短的时间学好并做好的人。

五、你的期望薪水是多少?

应对这个问题,要看你应征的是什么样的公司,我们可简单地分为二类,一类是知名度高,有制度的公司,例如股票上市公司,另一类是较小型的公司.

第一类的公司,由于公司员工多薪资水准有一定的制度及合于市场的水准应征的是这一类的公司的一般性职务,你只要回答依公司制度即可,因为在这种状况下,薪资的弹性不大,若你要求的薪水过高或过低,对你而言,都是负面的。

至于你应征的公司是第二类,员工人数较少的小型公司,薪资上的弹性会较大,你最好技巧地询问出他们要支付的薪水,当然这不一定是一个绝对数字,它可以是一个范围。更多有关这方面的知识你可以到约聘网www.51yuepin.com查询。
如何了解薪资范围呢? 你可主动地询问,例如这种工作内容,如果贵公司找到适合的人选,你们提供的薪水范围是多少?你不需要太回避薪水的问题,记住你只要本着諴恳,有礼貌的态度询问即可,若对方在薪水上老是不干脆,这份工作不要也罢。因为就算应聘成功了,往后的日子恐怕也不好过。

4. 前端面试的提问,该怎么回答

脸上胶原蛋白

5. 如何在面试中回答“说说什么是原型和原型链”

每个对象都会在其内部初始化一个属性,就是prototype(原型)。通俗的说,原型就是一个模板,更准确的说是一个对象模板。

当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个prototype又会有自己的prototype,于是就这样一直找下去,也就是我们平时所说的原型链的概念。

对于函数而言,只有函数才有 prototype 属性,Person.prototype 是一个对象,并且有两个属性, 一个是 constructor 指向其构造函数 Person, 一个是 __proto__ 属性:是一个对象,指向上一层的原型。

原型链的尽头是Object.prototype。所有对象均从Object.prototype继承属性。

Function.prototype和Function.__proto__为同一对象。Object/Array/String 等等构造函数本质上和 Function 一样,均继承于Function.prototype。

Function.prototype直接继承Object.prototype。

这里的 Object 和 Function 有点鸡和蛋的问题,总结:先有Object.prototype(原型链顶端),Function.prototype继承Object.prototype而产生,最后,Function 和 Object 和其它构造函数继承Function.prototype而产生。

6. web前端面试怎么介绍

  • 你的笔试题, 根据其做延伸.

  • 你的简历, 技术栈、工作外学习情况、项目经验. 第一页很重要, 最好都能掌握, 有亮点更好.

  • 面试官额外的延展的知识点, 随机问,看你运气和积累(一般会提及到 ES6、解决实际问题的方法、数据结构与算法都有可能).

  • 应对

  • 刷题, 各种基础题会帮你快速回忆起来, 比你看书快, 如果基础不好的话, 看书好好学学吧.

  • 简历上自己写的东西, 要能说出来.

  • 积累, 每次面试不成功就回来填坑吧, 还是有掌握不到位的. 我觉得能坚持下来的话, 找工作只是时间问题.

  • 据公司业务不同, 着重点不一样, 公司能把你简历挑出来, 就说明有用人单位感兴趣的部分.

  • 可能你写的是熟练使用 Vue, 公司也是这个技术栈.

  • 可能你知识写的全面, 公司想面面你实际掌握怎么样.

  • 可能你项目写的贴合用人单位需要, 比如都是做后台管理的.

  • 框架问题: (Vue 举例, 3框架实质问题差不多, 具体有些差异)

  • 封装过哪些组件?有自己写过 UI 组件吗?

  • 什么是 MVVM , 和 MVC 是什么区别, 原理是什么?

  • 父子组件怎么通信的?

  • 兄弟组件怎么通信的?

  • 生命周期有哪些, 怎么用?

  • Vue 全家桶都用过哪些?具体怎么用?

  • HTML5 + CSS3

  • 盒子模型

  • 如何给未知宽高的图片垂直居中对齐? 有几种方法?

  • 移动端的 rem 布局.

  • 前端可以做哪些优化, 或问你 SEO, 基本都问.

  • 清除浮动方式和原理, 基本都问. 几种方式? 原理? 为什么要用伪元素? 具体代码怎么写,为什么这么写?

  • 清除浮动就会涉及到 BFC 的问题.

  • 给你实际页面例子, 让你口述布局或手写实现细节, 可以使用几种方法, 怎么写兼容性好, 拓展性好.

  • 具体 API 哪个 CSS 版本的?

  • CSS3 新增了哪些 API?

  • 可能问你哪些 API 是 CSS 哪个版本的? 兼容性怎么样.

  • CSS hack 是什么? 包含什么? 怎么处理兼容性问题?

  • HTML5 新增了哪些 API? 哪些比较常用? 用来做什么? 实际怎么用?

  • cookie, session, localStrorage, sessionStorage 区别, 具体怎么用代码去操作?

  • JavaScript

  • 变量声明提升的问题.

  • 闭包的原理, 闭包的各种题, 基本都问.

  • DOM2 事件流, 冒泡和捕获问题?

  • this 指向问题, 一般都是在笔试题里, 拿着问你, 问的比较多.

  • call 和 apply 区别? 有的还会加问 bind?

  • 面向对象编程中的继承问题, 原型链问题在笔试题里比较常见.

  • jQuery API , 各种操作 DOM 用法, 还有一些新的 API, 这种在不用 3 大框架的公司会问的很详细.

  • 可能有些考算法结构的, 可以了解一下, 一般前端掌握的很少.

  • Ajax 基本都问, 问的细节可能不同, 比如 get 和 post 有什么区别?

  • 数组的方法 - es6 以下基本都能熟练使用, 应该会加分不少

  • 字符串的方法 - 拼接, 截取, 带些正则

  • 数组去重问的挺多的(解法很多, ES6 有很多简短写法)

  • ES6 的 Promise , 很多都会问. 如果公司用框架或者你写了, 还会问你 Class.

  • var, let, const区别, 问的多.

  • 栈和队列结构, 有的会问.

  • 跨域问题: 同源策略, 解决方案, 解决原理(比如 jsonp 的原理), 这里都是高发区.

7. 面试问原型链如何回答

1、参加面试的时候要穿深色的衣服,穿浅颜色的衣服会显得太有活力,不能突出成熟和可靠的气质;
2、身上的气味也很重要,散发出不雅的味道,会给形象降低分数;
3、头发一定要整洁,不可以蓬头垢面;
4、面试前一定要整理好内衬,不能犯系错纽扣这种小错误,会留下不细心,不踏实的印象;
5、简历的制作要朴实,不能因为想提高面试率而制作太豪华的简历;
6、进去面试场所不能忘记敲门,门如果开着的话也要象征性的敲几下;
7、面试落座的时候桌椅不要发出响声。
编辑于 2019-11-22
查看全部2个回答
如何克服开会发言紧张心理_告诉你一个简单解决的方法_
值得一看的口才相关信息推荐
如何克服开会发言紧张心理,心跳加速,大脑空白,和上级交流紧张,5招让你摆脱开会痛苦
北京企飞科技有限公司广告
国考银保监面试_面试技巧_面试流程_面试题型_时代顾邦
值得一看的银保监相关信息推荐
【时代顾邦】提供国考银保监面试,面试辅导,面试技巧,面试题型分析,面试场景模拟,业界名师一对一,面授讲解,模拟央行面试流程,反复练习,误区规避,协议报班,不过退费!
西安时代顾邦教育科技有限公司广告
— 你看完啦,以下内容更有趣 —
实习生简历怎么写
实习生简历怎么写?实习生简历大概就分为以下这几部分:第一部个人介绍,其实个人介绍是你自己对自己简历的一个总结性概括,一方面可以更加节约HR看你简历的时间,另一方面也是对你自己的总结概括能力的一个体现。第二部分是你的教育经历,因为是应届毕业生或者是还没毕业的学生,所以教育经验就显得举足轻重了,教育经验一定要把自己优秀的一面体现出来,

8. 前端开发面试回答,你怎么回答

我面试过很多 前端程序员,非常了解面试者和面试官的心理,我可以很负责的告诉你:

就算面试你的人说你只能拿8K,但是你完全可以通过各种方法去拿到10K以上的薪资!

面试的时候面试官都是什么样的心理?

大多数公司的领导都会通过给你构造一个宏伟的蓝图以及对你进行技术打击,来让你降低标准,因为任何一家公司都希望花最少的钱请到最NB的技术人才,其实双方就是一个周旋的过程,看谁的情商更高一些,但往往都是面试者被面试官拿下的情况比较多。

我给面试经验不多的 前端程序员4个建议:

1、说工资时千万不要说自己的理想工资,在这个之上虚高一点!

假设你预期的薪资是10k,你很实在的说要10k,那么按照常理来说,你的工资标准是一定会被往下进行打压的。

你可以先说自己以前的工作的薪资在11K左右,现在换份工作想要13K的薪资,这个时候面试官就会想,这个人以前的工资是11k,现在给他10k他肯定是不会来的,但他还是会跟你进行压价,但是压价肯定都是在10k以上的,所以你和面试官谈判的时候,如果他认可你,那么你的薪资应该就会在10k-13k之间,无论最终是10k还是11k或者12k,我们的目标都已经达到了。你可以进行一番思考,最终同意对方的开价。

但是你不要跟轻易的答应,一定要拿捏一下,让对方觉得你也在考虑,最终你选择了他们公司,要表达出对他们公司的愿景,自己中意的是职业发展,喜欢的是公司氛围等等因素,这样对方才会认为你是看重公司的发展,而不是因为工资。关于这点我只能说,华夏民族的人和人交流的关系是世界最微妙的,这些套路大家心知肚明,但是你用和不用还真的是两种效果。

2、设置一个自己的心理价位

如果对方说的薪资低于这个心理价位,我们一定要果断拒绝,保持我们的原则性,不要因为对方说了而让你降低了自己的心理价位,这样也会让面试官觉得你非常的有原则,非常自信,人们都尊重这样的人,如果你一味的做舔狗,下场会非常悲惨。

根据我十年多的IT从业经验来看,即使是做同样的工作,也会存在着很多工资高低差距较多的情况,所以不要掉在一棵树上,现在社会工作机会这么多,只要有实实在在的技术,工作是很容易找的,一定要多去尝试。

3、凸显自己的价值,让对方觉得你是个人才

如果之前两点没有达到预期成效,但你又非常看好这家公司,就该尽力争取了;

用自己之前做成的事情说事情,最好是用数据给面试官说明,表达清楚自己为什么要这样的薪资,让对方感觉到你值这么多钱,如果对方公司现在比较缺人,而且你要的薪资没有特别离谱,还有有希望拿下的。

4、公司一般都有奖金福利可以弥补工资的欠缺

大多数人都想不到那么远,都是盯着眼前的薪资,但其实很多公司都有项目提成、奖金,这也是钱啊,有一些不错的公司都是14薪往上,所以在跟公司谈的时候,一定要去问他们是否有奖金、年终奖之类的福利。


除了被压榨薪资的问题,还有以下几点是必须要注意的!

1、项目作品

面试的时候,除了基础的知识技术外,一个项目经验是非常重要的,面试官会着重去问你的项目过程,所以准备好一份好的项目实战,不只是证明你对这次面试的重视,更是证明你有能力胜任这份工作的利器。

2、去背那些常问的面试题

面试题对于以下几个问题都会问:

·自我介绍(建议30s-60s)

·了解我们公司的基本情况吗?

·你上家公司离职的原因是什么?

·你自己的职业规划是什么?

·自我评价一下自己的优缺点?

以上问题都是大部分公司都会问到的,其实面试官只是想多了解你一些,而这些回答在网上有非常标准的答案,如果你觉得自己回答不好,你可以去网上找一些标准的答案背一下,还是非常有必要的,做到万无一失。

3、假设面试官没有跟你说薪资的问题,那么我们也不要主动去提及,这样会显得你非常的着急,最好是先拿到offer之后再去谈薪资,这样对于我们来说是非常有利的,经验之谈。

4、面试的时候不要对方问一句你就答一句,你一定要明白面试的本质是什么,在短时间内展示你的才华,方方面面的才能,给对方留下一个好的印象。

5、面试的过程中,是你展现的时候,所以80%的时间都应该你来主导,你来展示自己的才能,一定要非常着重的表现自己。

6、在回答面试官时,换位思考几秒钟:

·他为什么要问这个问题?

·他想知道什么答案?

·他想通过这个答案判断出什么?

所谓知己知彼才能百战不殆,你一定要换位思考对方问的问题,想要知道什么,从你的回答中他是否可以得到他想要的答案,所以面试是一门非常深的学问,人与人之间心理的博弈。

总结:

以上全部都是面试技巧方面,这属于细活,而真正掌握技术才是根本,如果你没有掌握良好的技术,技巧也帮助不了你找到一份工作,当你的技术达标,在加上好的面试技巧,就是如虎添翼,工作随便你选择。

常在这里回答问题,热爱技术,喜欢帮别人解答行业技术问题和行业知识。

如果大家对于学习前端有任何不懂的可以随时来问我,我给你提供一个非常不错的前端交流学习qun:前面是二九六,中间是二一二,后面是五六二。有问题就在里面问我,这样你可以少走很多弯路,做起来有效率,记得多跟有经验的人交流,别闭门造车。如果没有比较好的教程,也可以管我要。

9. 面试问js原型怎么理解

一、基于原型链的继承

1.继承属性

JavaScript 对象是动态的属性“包”(指其自己的属性)。JavaScript 对象有一个指向一个原型对象的链。当试图访问一个对象的属性时,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依此层层向上搜索,直到找到一个名字匹配的属性或到达原型链的末尾。下面的代码将演示,当访问一个对象的属性时会发生的行为:

[javascript]view plain

  • //假定有一个对象o,其自身的属性(ownproperties)有a和b:

  • //{a:1,b:2}

  • //o的原型o.[[Prototype]]有属性b和c:

  • //{b:3,c:4}

  • //最后,o.[[Prototype]].[[Prototype]]是null.

  • //这就是原型链的末尾,即null,

  • //根据定义,null没有[[Prototype]].

  • //综上,整个原型链如下:

  • //{a:1,b:2}--->{b:3,c:4}--->null

  • console.log(o.a);//1

  • //a是o的自身属性吗?是的,该属性的值为1

  • console.log(o.b);//2

  • //b是o的自身属性吗?是的,该属性的值为2

  • //o.[[Prototype]]上还有一个'b'属性,但是它不会被访问到.这种情况称为"属性遮蔽(propertyshadowing)".

  • console.log(o.c);//4

  • //c是o的自身属性吗?不是,那看看o.[[Prototype]]上有没有.

  • //c是o.[[Prototype]]的自身属性吗?是的,该属性的值为4

  • console.log(o.d);//undefined

  • //d是o的自身属性吗?不是,那看看o.[[Prototype]]上有没有.

  • //d是o.[[Prototype]]的自身属性吗?不是,那看看o.[[Prototype]].[[Prototype]]上有没有.

  • //o.[[Prototype]].[[Prototype]]为null,停止搜索,

  • //没有d属性,返回undefined

  • 创建一个对象它自己的属性的方法就是设置这个对象的属性。唯一例外的获取和设置的行为规则就是当有一个getter或者一个setter被设置成继承的属性的时候。

    2.继承方法

    JavaScript 并没有其他基于类的语言所定义的“方法”。在 JavaScript 里,任何函数都可以添加到对象上作为对象的属性。函数的继承与其他的属性继承没有差别,包括上面的“属性遮蔽”(这种情况相当于其他语言的方法重写)。

    当继承的函数被调用时,this指向的是当前继承的对象,而不是继承的函数所在的原型对象。

    [javascript]view plain

  • varo={

  • a:2,

  • m:function(){

  • returnthis.a+1;

  • }

  • };

  • console.log(o.m());//3

  • //当调用o.m时,'this'指向了o.

  • varp=Object.create(o);

  • //p是一个对象,p.[[Prototype]]是o.

  • p.a=12;//创建p的自身属性a.

  • console.log(p.m());//13

  • //调用p.m时,'this'指向p.

  • //又因为p继承o的m函数

  • //此时的'this.a'即p.a,即p的自身属性'a'


  • 二、使用不同的方法来创建对象和生成原型链
  • EDIT

    1.使用普通语法创建对象

    [javascript]view plain

  • varo={a:1};

  • //o这个对象继承了Object.prototype上面的所有属性

  • //所以可以这样使用o.hasOwnProperty('a').

  • //hasOwnProperty是Object.prototype的自身属性。

  • //Object.prototype的原型为null。

  • //原型链如下:

  • //o--->Object.prototype--->null

  • vara=["yo","whap","?"];

  • //数组都继承于Array.prototype

  • //(indexOf,forEach等方法都是从它继承而来).

  • //原型链如下:

  • //a--->Array.prototype--->Object.prototype--->null

  • functionf(){

  • return2;

  • }

  • //函数都继承于Function.prototype

  • //(call,bind等方法都是从它继承而来):

  • //f--->Function.prototype--->Object.prototype--->null

  • 2.使用构造器创建对象

    在 JavaScript 中,构造器其实就是一个普通的函数。当使用new 操作符来作用这个函数时,它就可以被称为构造方法(构造函数)。

    [javascript]view plain

  • functionGraph(){

  • this.vertexes=[];

  • this.edges=[];

  • }

  • Graph.prototype={

  • addVertex:function(v){

  • this.vertexes.push(v);

  • }

  • };

  • varg=newGraph();

  • //g是生成的对象,他的自身属性有'vertices'和'edges'.

  • //在g被实例化时,g.[[Prototype]]指向了Graph.prototype.


  • 3.使用 Object.create 创建对象

    ECMAScript 5 中引入了一个新方法:Object.create()。可以调用这个方法来创建一个新对象。新对象的原型就是调用create方法时传入的第一个参数:

    [javascript]view plain

  • vara={a:1};

  • //a--->Object.prototype--->null

  • varb=Object.create(a);

  • //b--->a--->Object.prototype--->null

  • console.log(b.a);//1(继承而来)

  • varc=Object.create(b);

  • //c--->b--->a--->Object.prototype--->null

  • vard=Object.create(null);

  • //d--->null

  • console.log(d.hasOwnProperty);//undefined,因为d没有继承Object.prototype


  • 4.使用class关键字

    ECMAScript6 引入了一套新的关键字用来实现class。使用基于类语言的开发人员会对这些结构感到熟悉,但它们是不一样的。 JavaScript 仍然是基于原型的。这些新的关键字包括class,constructor,static,extends, 和super.

    [javascript]view plain

  • "usestrict";

  • classPolygon{

  • constructor(height,width){

  • this.height=height;

  • this.width=width;

  • }

  • }

  • classSquareextendsPolygon{

  • constructor(sideLength){

  • super(sideLength,sideLength);

  • }

  • getarea(){

  • returnthis.height*this.width;

  • }

  • setsideLength(newLength){

  • this.height=newLength;

  • this.width=newLength;

  • }

  • }

  • varsquare=newSquare(2);

  • 5.性能

    在原型链上查找属性比较耗时,对性能有副作用,这在性能要求苛刻的情况下很重要。另外,试图访问不存在的属性时会遍历整个原型链。遍历对象的属性时,原型链上的每个可枚举属性都会被枚举出来。

    检测对象的属性是定义在自身上还是在原型链上,有必要使用hasOwnProperty方法,所有继承自Object.proptotype 的对象都包含这个方法。

    hasOwnProperty是 JavaScript 中唯一一个只涉及对象自身属性而不会遍历原型链的方法。

    注意:仅仅通过判断值是否为undefined还不足以检测一个属性是否存在,一个属性可能存在而其值恰好为undefined。

    6.不好的实践:扩展原生对象的原型

    一个经常被用到的错误实践是去扩展Object.prototype或者其他内置对象的原型。该技术被称为 monkey patching,它破坏了原型链的密封性。尽管,一些流行的框架(如 Prototype.js)在使用该技术,但是并没有足够好的理由要用其他非标准的方法将内置的类型系统搞乱。我们去扩展内置对象原型的唯一理由是引入新的 JavaScript 引擎的某些新特性,比如Array.forEach。

10. Web前端岗位面试题有哪些

前端面试题汇总,基本上会有四大类问题,具体如下:
一、HTML

1、Doctype作用?严格模式与混杂模式如何区分?它们有何意义?

2、HTML5 为什么只需要写 <!DOCTYPE HTML>?
3、行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
4、页面导入样式时,使用link和@import有什么区别?
5、介绍一下你对浏览器内核的理解?
6、常见的浏览器内核有哪些?
7、html5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和 HTML5?
8、简述一下你对HTML语义化的理解?
9、HTML5的离线储存怎么使用,工作原理能不能解释一下?
10、浏览器是怎么对HTML5的离线储存资源进行管理和加载的呢?
11、请描述一下 cookies,sessionStorage 和 localStorage 的区别?
12、iframe有那些缺点?
13、Label的作用是什么?是怎么用的?(加 for 或 包裹)
14、HTML5的form如何关闭自动完成功能?
15、如何实现浏览器内多个标签页之间的通信? (阿里)
16、webSocket如何兼容低浏览器?(阿里)
17、页面可见性(Page Visibility)API 可以有哪些用途?
18、如何在页面上实现一个圆形的可点击区域?
19、实现不使用 border 画出1px高的线,在不同浏览器的Quirksmode和CSSCompat模式下都能保持同一效果。
20、网页验证码是干嘛的,是为了解决什么安全问题?
21、tite与h1的区别、b与strong的区别、i与em的区别?

二、css

1、介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的?

2、CSS选择符有哪些?哪些属性可以继承?
3、CSS优先级算法如何计算?
4、CSS3新增伪类有那些?
5、如何居中div?如何居中一个浮动元素?如何让绝对定位的div居中?
6、display有哪些值?说明他们的作用。
7、position的值relative和absolute定位原点是?
8、CSS3有哪些新特性?
9、请解释一下CSS3的Flexbox(弹性盒布局模型),以及适用场景?
10、用纯CSS创建一个三角形的原理是什么?

11、一个满屏 品 字布局 如何设计?

三、常见兼容性问题?


  1. 1、li与li之间有看不见的空白间隔是什么原因引起的?有什么解决办法?
    2、经常遇到的浏览器的兼容性有哪些?原因,解决方法是什么,常用hack的技巧 ?
    3、为什么要初始化CSS样式。
    4、absolute的containing block计算方式跟正常流有什么不同?
    5、CSS里的visibility属性有个collapse属性值是干嘛用的?在不同浏览器下以后什么区别?
    6、position跟display、margin collapse、overflow、float这些特性相互叠加后会怎么样?
    7、对BFC规范(块级格式化上下文:block formatting context)的理解?
    8、CSS权重优先级是如何计算的?
    9、请解释一下为什么会出现浮动和什么时候需要清除浮动?清除浮动的方式
    10、移动端的布局用过媒体查询吗?
    11、使用 CSS 预处理器吗?喜欢那个?
    12、CSS优化、提高性能的方法有哪些?
    13、浏览器是怎样解析CSS选择器的?
    14、在网页中的应该使用奇数还是偶数的字体?为什么呢?
    15、margin和padding分别适合什么场景使用?
    16、抽离样式模块怎么写,说出思路,有无实践经验?[阿里航旅的面试题]
    17、元素竖向的百分比设定是相对于容器的高度吗?
    18、全屏滚动的原理是什么?用到了CSS的那些属性?
    19、什么是响应式设计?响应式设计的基本原理是什么?如何兼容低版本的IE?
    20、视差滚动效果,如何给每页做不同的动画?(回到顶部,向下滑动要再次出现,和只出现一次分别怎么做?)
    21、::before 和 :after中双冒号和单冒号 有什么区别?解释一下这2个伪元素的作用。
    22、如何修改chrome记住密码后自动填充表单的黄色背景 ?
    23、你对line-height是如何理解的?
    24、设置元素浮动后,该元素的display值是多少?(自动变成display:block)
    25、怎么让Chrome支持小于12px 的文字?
    26、让页面里的字体变清晰,变细用CSS怎么做?(-webkit-font-smoothing: antialiased;)
    27、font-style属性可以让它赋值为“oblique” oblique是什么意思?
    28、position:fixed;在android下无效怎么处理?
    29、如果需要手动写动画,你认为最小时间间隔是多久,为什么?(阿里)
    30、display:inline-block 什么时候会显示间隙?(携程)
    31、overflow: scroll时不能平滑滚动的问题怎么处理?
    32、有一个高度自适应的div,里面有两个div,一个高度100px,希望另一个填满剩下的高度。
    33、png、jpg、gif 这些图片格式解释一下,分别什么时候用。有没有了解过webp?
    34、什么是Cookie 隔离?(或者说:请求资源的时候不要让它带cookie怎么做)
    35、style标签写在body后与body前有什么区别?

    四、JavaScript

    1、介绍JavaScript的基本数据类型。
    2、说说写JavaScript的基本规范?
    3、JavaScript原型,原型链 ? 有什么特点?
    4、JavaScript有几种类型的值?(堆:原始数据类型和 栈:引用数据类型),你能画一下他们的内存图吗?
    5、Javascript如何实现继承?
    6、Javascript创建对象的几种方式?
    7、Javascript作用链域?
    8、谈谈This对象的理解。
    9、eval是做什么的?
    10、什么是window对象? 什么是document对象?
    11、null,undefined的区别?
    12、写一个通用的事件侦听器函数(机试题)。
    13、[“1”, “2”, “3”].map(parseInt) 答案是多少?
    14、关于事件,IE与火狐的事件机制有什么区别? 如何阻止冒泡?
    15、什么是闭包(closure),为什么要用它?
    16、javascript 代码中的”use strict”;是什么意思 ? 使用它区别是什么?
    17、如何判断一个对象是否属于某个类?
    18、new操作符具体干了什么呢?
    19、用原生JavaScript的实现过什么功能吗?
    20、Javascript中,有一个函数,执行时对象查找时,永远不会去查找原型,这个函数是?
    21、对JSON的了解?
    22、[].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16) }) 能解释一下这段代码的意思吗?
    23、js延迟加载的方式有哪些?
    24、Ajax 是什么? 如何创建一个Ajax?
    25、同步和异步的区别?
    26、如何解决跨域问题?
    27、页面编码和被请求的资源编码如果不一致如何处理?
    28、模块化开发怎么做?
    29、AMD(Moles/Asynchronous-Definition)、CMD(Common Mole

    Definition)规范区别?
    30、requireJS的核心原理是什么?(如何动态加载的?如何避免多次加载的?如何 缓存的?)
    31、让你自己设计实现一个requireJS,你会怎么做?
    32、谈一谈你对ECMAScript6的了解?
    33、ECMAScript6 怎么写class么,为什么会出现class这种东西?
    34、异步加载的方式有哪些?
    35、documen.write和 innerHTML的区别?
    36、DOM操作——怎样添加、移除、移动、复制、创建和查找节点?
    37、.call() 和 .apply() 的含义和区别?
    38、数组和对象有哪些原生方法,列举一下?
    39、JS 怎么实现一个类。怎么实例化这个类
    40、JavaScript中的作用域与变量声明提升?
    41、如何编写高性能的Javascript?
    42、那些操作会造成内存泄漏?
    43、JQuery的源码看过吗?能不能简单概况一下它的实现原理?
    44、jQuery.fn的init方法返回的this指的是什么对象?为什么要返回this?
    45、jquery中如何将数组转化为json字符串,然后再转化回来?
    46、jQuery 的属性拷贝(extend)的实现原理是什么,如何实现深拷贝?
    47、jquery.extend 与 jquery.fn.extend的区别?
    48、jQuery 的队列是如何实现的?队列可以用在哪些地方?
    49、谈一下Jquery中的bind(),live(),delegate(),on()的区别?
    50、JQuery一个对象可以同时绑定多个事件,这是如何实现的?
    51、是否知道自定义事件。jQuery里的fire函数是什么意思,什么时候用?
    52、jQuery 是通过哪个方法和 Sizzle 选择器结合的?(jQuery.fn.find()进入Sizzle)
    53、针对 jQuery性能的优化方法?
    54、Jquery与jQuery UI有啥区别?
    55、JQuery的源码看过吗?能不能简单说一下它的实现原理?
    56、jquery 中如何将数组转化为json字符串,然后再转化回来?
    57、jQuery和Zepto的区别?各自的使用场景?
    58、针对 jQuery 的优化方法?
    59、Zepto的点透问题如何解决?
    60、jQueryUI如何自定义组件?
    61、需求:实现一个页面操作不会整页刷新的网站,并且能在浏览器前进、后退时正确响应。给出你的技术实现方案?
    62、如何判断当前脚本运行在浏览器还是node环境中?(阿里)
    63、移动端最小触控区域是多大?
    64、jQuery 的 slideUp动画 ,如果目标元素是被外部事件驱动, 当鼠标快速地连续触发外部元素事件, 动画会滞后的反复执行,该如何处理呢?
    65、把 Script 标签 放在页面的最底部的body封闭之前 和封闭之后有什么区别?浏览器会如何解析它们?
    66、移动端的点击事件的有延迟,时间是多久,为什么会有? 怎么解决这个延时?(click 有 300ms 延迟,为了实现safari的双击事件的设计,浏览器要知道你是不是要双击操作。)
    67、知道各种JS框架(Angular, Backbone, Ember, React, Meteor, Knockout…)么? 能讲出他们各自的优点和缺点么?
    68、Underscore 对哪些 JS 原生对象进行了扩展以及提供了哪些好用的函数方法?
    69、解释JavaScript中的作用域与变量声明提升?
    70、那些操作会造成内存泄漏?
    71、JQuery一个对象可以同时绑定多个事件,这是如何实现的?
    72、Node.js的适用场景?
    (如果会用node)知道route, middleware, cluster, nodemon, pm2, server-side rendering么?
    73、解释一下 Backbone 的 MVC 实现方式?
    74、什么是“前端路由”?什么时候适合使用“前端路由”? “前端路由”有哪些优点和缺点?
    75、知道什么是webkit么? 知道怎么用浏览器的各种工具来调试和debug代码么?
    76、如何测试前端代码么? 知道BDD, TDD, Unit Test么? 知道怎么测试你的前端工程么(mocha, sinon, jasmin, qUnit..)?
    77、前端templating(Mustache, underscore, handlebars)是干嘛的, 怎么用?
    78、简述一下 Handlebars 的基本用法?
    79、简述一下 Handlerbars 的对模板的基本处理流程, 如何编译的?如何缓存的?
    80、用js实现千位分隔符?(来源:前端农民工,提示:正则+replace)
    检测浏览器版本版本有哪些方式?
    81、我们给一个dom同时绑定两个点击事件,一个用捕获,一个用冒泡,你来说下会执行几次事件,然后会先执行冒泡还是捕获