js面试题必刷003

前言

js面试题系列,不断更新中,力争为广大前端就业者更好的应对面试,也增长本身做为一名前端的技术常识。javascript

new操做符具体干了什么呢

一、建立一个空对象,而且 this 变量引用该对象,同时还继承了该函数的原型。css

二、属性和方法被加入到 this 引用的对象中。前端

三、新建立的对象由 this 所引用,而且最后隐式的返回 this 。java

var obj  = {};
obj.__proto__ = Base.prototype;
Base.call(obj);
复制代码

js延迟加载的方式

1 defer(等dom加载以后加载)和async(异步加载),仅能够在支持的浏览器进行使用面试

2 动态建立DOM方式(建立script,插入到DOM中,加载完毕后callBack浏览器

3 按需异步载入js安全

哪些操做会形成内存泄漏

内存泄漏指任何对象在您再也不拥有或须要它以后仍然存在。 垃圾回收器按期扫描对象,并计算引用了每一个对象的其余对象的数量。若是一个对象的引用数量为 0(没有其余对象引用过该对象),或对该对象的唯一引用是循环的,那么该对象的内存便可回收。 setTimeout 的第一个参数使用字符串而非函数的话,会引起内存泄漏。 闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环)bash

WEB应用从服务器主动推送Data到客户端有那些方式

  • Javascript数据推送
  • Commet:基于HTTP长链接的服务器推送技术
  • 基于WebSocket的推送方案
  • SSE(Server-Send Event):服务器推送数据新方式

javascript对象的几种建立方式

1,工厂模式服务器

2,构造函数模式闭包

3,原型模式

4,混合构造函数和原型模式

5,动态原型模式

6,寄生构造函数模式

7,稳妥构造函数模式

js继承的几种方式

1,原型链继承

2,借用构造函数继承

3,组合继承(原型+借用构造)

4,原型式继承

5,寄生式继承

6,寄生组合式继承

严格模式的限制

  • 变量必须声明后再使用
  • 函数的参数不能有同名属性,不然报错
  • 不能使用with语句
  • 不能对只读属性赋值,不然报错
  • 不能使用前缀0表示八进制数,不然报错
  • 不能删除不可删除的属性,不然报错
  • 不能删除变量delete prop,会报错,只能删除属性delete global[prop]
  • eval不会在它的外层做用域引入变量
  • eval和arguments不能被从新赋值
  • arguments不会自动反映函数参数的变化
  • 不能使用arguments.callee
  • 不能使用arguments.caller
  • 禁止this指向全局对象
  • 不能使用fn.caller和fn.arguments获取函数调用的堆栈
  • 增长了保留字(好比protected、static和interface)

设立”严格模式”的目的

  • 消除Javascript语法的一些不合理、不严谨之处,减小一些怪异行为;
  • 消除代码运行的一些不安全之处,保证代码运行的安全;
  • 提升编译器效率,增长运行速度;
  • 为将来新版本的Javascript作好铺垫。
  • 注:通过测试IE6,7,8,9均不支持严格模式。

说说你对AMD和Commonjs的理解

CommonJS是服务器端模块的规范,Node.js采用了这个规范。CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操做。AMD规范则是非同步加载模块,容许指定回调函数。 AMD推荐的风格经过返回一个对象作为模块对象,CommonJS的风格经过对module.exports或exports的属性赋值来达到暴露模块对象的目的

mvvm的理解

Angular它采用双向绑定(data-binding):View的变更,自动反映在 ViewModel,反之亦然。核心就是viewModel的设定,能够实现响应的数据变化 组成部分Model、View、ViewModel View:UI界面 ViewModel:它是View的抽象,负责View与Model之间信息转换,将View的Command传送到Model; Model:数据访问层

请解释什么是事件代理

事件代理(Event Delegation),又称之为事件委托。是 JavaScript 中经常使用绑定事件的经常使用技巧。顾名思义,“事件代理”便是把本来须要绑定的事件委托给父元素,让父元素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡。使用事件代理的好处是能够提升性能。

在js针对css进行操做的时候,好比操做多个样式,是多个样式分别渲染仍是计算以后渲染

js的执行引擎和渲染引擎是同步的,因此在js代码执行操做的时候渲染的部分不会发生变化,在操做完全部的样式以后才会在页面上进行样式的渲染。这也是为何若是有js代码的下载和执行会阻塞页面的渲染的缘由。

相关文章
相关标签/搜索