多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ### new操作符具体干了什么呢 1、创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。 2、属性和方法被加入到 this 引用的对象中。 3、新创建的对象由 this 所引用,并且最后隐式的返回 this 。 ``` var obj = {}; obj.__proto__ = Base.prototype; Base.call(obj); ``` ### js延迟加载的方式 1 defer(等dom加载之后加载)和async(异步加载),仅可以在支持的浏览器进行使用 2 动态创建DOM方式(创建script,插入到DOM中,加载完毕后callBack 3 按需异步载入js ### 哪些操作会造成内存泄漏 内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。 垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。 setTimeout 的第一个参数使用字符串而非函数的话,会引发内存泄漏。 闭包、控制台日志、循环(在两个对象彼此引用且彼此保留时,就会产生一个循环) ### 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代码的下载和执行会阻塞页面的渲染的原因。