1.理解原型、原型链?

每创建一个函数,函数上都有一个prototype的属性,他是一个对象。这个对象的作用就是当使用它创建实例的时候,这些实例都会共享原型上的属性和方法。
当我们访问对象中的某个属性时,如果这个对象内部不存在这个属性,那么他就会去__proto__里面去找这个属性,这个__proto__又会有自己的__proto__,
就这么一直找下去直到最后一个__proto__值为null。

var A = function(){};
var a = new A();
console.log(a.__proto__); //A {}(即构造器function A 的原型对象)
console.log(a.__proto__.__proto__); //Object {}(即构造器function Object 的原型对象)
console.log(a.__proto__.__proto__.__proto__); //null

2. __proto__和prototype的关系?

__proto__是每个对象都有的一个属性,而prototype是函数才会有的属性。

举例:var p = new Person();
其中p.__proto__ == Person.prototype。

3. 如何鉴别属性是自有属性还是原型属性?

hasOwnProperty()方法返回true即为自有属性,返回false有两种可能

  • 1.为原型属性;
  • 2.跟本不存在该属性

所以判断是否是原型属性,要先用in判断该对象中是否存在此属性:

function hasPrototypeProperty(obj, name){return name in obj && !obj.hasOwnProperty(name);}

4.如何判断某个对象是否是另一个对象的原型对象?

isPrototypeOf();
例:function Cat(name,color){}
var cat1 = new Cat();
alert(Cat.prototype.isPrototypeOf(cat1)); //true

5. ES6箭头函数注意点 ?

  • 1.函数体内的this,是定义时所在的对象,而不是使用时所在的对象,始终指向自身外的第一个this。
  • 2.不可以做构造函数,也就是说不可以使用 new 命令,否则会抛错。
  • 3.不可以使用arguments对象,不存在,可以使用Rest代替。
使用Rest:var foo=(...arguments)=> {console.log(arguments);
}

6. 让你开始一个项目,你会选择用 vue 还是 React?

  • 1如果你喜欢用模板搭建应用,请使用 vue。
  • 2如果你的应用需要尽可能小和快,请使用 vue。
  • 3如果你计划构建一个大学型应用,请使用 React。
  • 4如果你想要同时适用于Web端和原生App的框架,请使用 React。
  • 5如果你想要更大的生态圈(论坛等),请使用 React。

7. React创建组件的三种方式及其区别 ?

  • 1.函数式定义(无状态组件):function 组件名(props,/context/){}
  • 2.ES5之var 组件名= React.creatClass({})
  • 3.ES6之class 组件名 extends React.Components{}

8. React 中 keys 的作用是什么 ?

keys 是用于追踪哪些元素被修改、被添加、被删除的辅助标识。在开发过程中,需要保证某个元素的 key 在其同级元素中具有唯一性。

9. 为什么接下来这段代码不是 IIFE(立即调用的函数表达式)?

function foo(){ }();

以function关键字开头的语句会被解析为函数声明,而函数声明是不允许直接运行的。
只有当解析器把这句话解析为函数表达式,才能够直接运行,

    解决1.(function foo(){// code..})()解决2.var foo =  function(){};foo();

10. js中如何判断null和undefined ?

    if(typeof(a)=="undefined"){console.log('undefined')}if(typeof(a)!="undefined"&&a!=0&&!a){console.log('null')}

11. 实现一个数组乱序排列 ?

    var a = [1, 2, 3, 5, 4];function fn(a, b) {return Math.Random() - 0.5}a.sort(fn);//[5,1,2,4,3]var a = [1, 2, 3, 5, 4];function fn(a, b) {return a - b}a.sort(fn);//[1, 2, 3, 4, 5]var a = [1, 2, 3, 5, 4];function fn(a, b) {return b - a}a.sort(fn);//[5, 4, 3, 2, 1]

js如何区分数组还是对象 ? (代表:实现深拷贝函数)

第一种:Object.prototype.toString.call(a).slice(8,-1) == 'Array' ? [] : {}

    var a = {};Object.prototype.toString.call(a);//"[object Object]"var a = [];Object.prototype.toString.call(a);//"[object Array]"

第二种:

    var a=[];var b={};typeof a === 'object' && !isNaN(a.length)//truetypeof b === 'object' && !isNaN(b.length)//false

第三种:

    var a=[];var b={};Array.isArray(a);//trueArray.isArray(b)//false

实现一个深拷贝函数:

function clone(obj) {if(typeof(obj)=='object'&&obj){//&&obj是排除obj=null//区分是数组还是对象,建立空数组或空对象var o = Array.isArray(obj) ? [] : {};for(var k in obj) {if(typeof(obj[k])=='object'){o[k] = clone(obj[k]);}else{o[k] = obj[k];}}}else{return obj;}return o;
}

...

微信公众号:前端实习日记

四月份面试题汇总(一)相关推荐

  1. Java面试题汇总及答案2021最新(序列化含答案)

    Java面试题汇总及答案2021最新(序列化含答案) 为大家整理了2021最新的Java面试题及答案下载,这套Java面试题总汇已经汇总了Java基础面试到高级Java面试题,几乎涵盖了作为一个Jav ...

  2. Java面试题汇总及答案2021最新(ioNio)

    Java面试题汇总及答案2021最新(io&Nio) 最近给大家整理了一批Java关于io和nio的面试题一共15题,是20201最新时间整理的,并且都含答案打包下载. 适宜阅读人群 需要面试 ...

  3. access汇总含义_2020最新大厂内部 PHP 高级工程师面试题汇总(二)

    51.数据库中的存放了用户 ID, 扣费很多行,redis 中存放的是用户的钱包,现在要写一个脚本,将数据库中的扣费记录同步到 redis 中,每 5 分钟执行一次.请问要考虑哪些问题? 思路:生产者 ...

  4. 程序员必看 c++笔试题汇总

    ①链表反转 单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题.比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3-& ...

  5. 超全!iOS 面试题汇总

    超全!iOS 面试题汇总 2015-10-20 CocoaChina 作者:Job_Yang 之前看了很多面试题,感觉要不是不够就是过于冗余,于是我将网上的一些面试题进行了删减和重排,现在分享给大家. ...

  6. 专业软件测试面试题汇总

    专业软件测试面试题汇总 一.如何保证测试用例能达到全部覆盖? 1.需要测试人员有丰富的测试经验 2.需求分析透彻,已确定好测试范围 3.通过测试用例评审 二.版本测试通过的标准是什么? 1.用例测试通 ...

  7. web前端兼容性面试题汇总!

    web前端兼容性面试题汇总 一.html部分 1.H5新标签在IE9以下的浏览器识别 html5shiv.js下载地址 2.ul标签内外边距问题ul标签在IE6\IE7中,有个默认的外边距,但是在IE ...

  8. java 正则表达式 替换字符串img标签的路径_python面试题汇总第06期-正则表达式(内附7题及答案)...

    1.python正则表达式中匹配(match)和查找(search)的区别 答:正则表达式中match和search的方法比较相似 相同点:都是在一个字符串s中寻找pat子字符串,如果能找到,就返回一 ...

  9. dotNET面试题汇总系列连载(1):基础语法

    点击上方"dotNET全栈开发","设为星标" 加"星标★",每天11.50,好文必达 全文约4000字,预计阅读时间8分钟 马上要到202 ...

最新文章

  1. 信息安全“拷问”智慧城市建设 如何解决
  2. pstack命令学习
  3. Craigslist模式在中国如何复制?中国特色的差异化在哪里?,互联网营销
  4. Algorithms Part 1-Question 5- Dijkstra's shortest-path-最短路径算法
  5. 【Pytorch】MNIST数据集的训练和测试
  6. Windows直接获取文件的哈希值
  7. 热烈庆祝个人博客突破1万人!
  8. 每日算法系列【LeetCode 354】俄罗斯套娃信封问题
  9. srt,ass,ssa三种字幕的区别
  10. 一位原码的乘法规则_原码一位乘法的实现算法
  11. 有道无术,术可求;有术无道,止于术
  12. 0xc0000225无法进系统_手把手研习win10系统出现0xc0000225无法进入系统的方法
  13. 基于Tensorflow深度学习的ECG身份识别方法(二)
  14. 行列式与矩阵相关的内容学习
  15. 【全栈开发实战小草看书之Web端(一)开发环境】
  16. oracle 11g Dataguard 之 Remote_Transport_user
  17. LeetCode 557 反转字符串中的单词 III
  18. CS224W图机器学习笔记8-图神经网络三大应用
  19. Matlab||EGM2008模型计算GOCE沿轨重力梯度及全球重力梯度分布
  20. 算法设计与分析—分支限界法应用(头歌实验)

热门文章

  1. ASP.NET MVC 5 学习教程:修改视图和布局页
  2. Linux——系统开关机指令简单学习笔记
  3. HDU 1824 Let's go home
  4. 微信小程序获取unionid与openid
  5. 高并发编程知识体系阅读总结
  6. mpvue构建小程序(步骤+地址)
  7. C# 抗变与协变的理解
  8. css高度100%(百分比高度)
  9. Css兼容:如何解决IE7和IE8的BUG
  10. c# http请求执行超时,解决办法(给某个方法设定超时时间)