前端面试 JS 篇
2017-05-11 13:29
141 查看
js 中的事件委托或是事件代理详解
异步流程控制方法
谈谈两种设计模式
1:工厂模式主要好处就是可以消除对象间的耦合,通过使用工程方法而不是 new 关键字。将所有实例化的代码集中在一个位置防止代码重复。
工厂模式解决了重复实例化的问题 ,但还有一个问题,那就是识别问题,因为根本无法搞清楚他们到底是哪个对象的实例。
function createObject(name,age,profession){ //集中实例化的函数 var obj = new Object(); obj.name = name; obj.age = age; obj.profession = profession; obj.move = function () { return this.name + ' at ' + this.age + ' engaged in ' + this.profession; }; return obj; } var test1 = createObject('trigkit4',22,'programmer');//第一个实例var test2 = createObject('mike',25,'engineer');//第二个实例
2:构造函数模式
使用构造函数的方法 ,即解决了重复实例化的问题 ,又解决了对象识别的问题,该模式与工厂模式的不同之处在于:
1.构造函数方法没有显示的创建对象 (new Object()); 2.直接将属性和方法赋值给 this 对象; 3.没有 renturn 语句。
null 和 undefined 的区别?
对未初始化的变量执行typeof操作符会返回
undefined值,对未声明的变量执行
typeof操作符同样也会返回
undefined值,所以我们在编写代码的过程中应该显示的初始化变量,那么当
typeof返回
undefined的时候,我们就知道被检测的变量还没有被声明而不是还没有初始化。、
undefined值是派生自
null值的,他们的相等性测试要返回
true
alert(null == undefined);//true alert(null === undefined);//false
null值表示一个空对象指针,而这也正是使用
typeof操作符检测
null值会返回
“object”的原因。
如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为
null,而不是其他值,这样一来,只要直接检查 `null“ 值就可以知道相应的变量是否已经保存了一个对象的引用。
if (car != null){ //对 car 对象执行某些操作 }
无论在什么情况下都没有必要把一个变量的值显示的设置为
undefined,可以同样的规则对
null却不适用。换句话说,只要意在保存对象的变量还没有真正保存对象,就应该明确的让该变量保存
null值。这样做不仅可以体现
null作为空对象指针的惯例,而且也有助于进一步区分
null和
undefined。
谈谈 JS 严格模式
编写一个函数实现对 Object,Array,Boolean,Number,String 这五种主要数据类型进行值复制
function clone(obj) { var o; switch (typeof obj) { case "undefined": break; case "string": o = obj + ""; break; case "number": o = obj - 0; break; case "boolean": o = obj; break; case "object": // object 分为两种情况 对象(Object)或数组(Array) if (obj === null) { o = null; } else { if (Array.isArray(obj)) { o = []; for (var i = 0; i < obj.length; i++) { o.push(clone(obj[i])); } } else { o = {}; for (var k in obj) { o[k] = clone(obj[k]); } a90c } } break; default: o = obj; break; } return o; }
相关文章推荐
- 前端面试准备1----JS中eval()解析和为什么不要使用eval
- 【前端面试】 JS异步编程
- 前端开发者面试问题 - JS 部分
- 最新前端面试- js
- 腾讯Web前端(Js)笔试面试之谈
- 前端JS面试中常见的算法问题总结
- 前端面试题目汇总摘录(JS 基础篇 —— 2018.11.02更新)
- 前端面试答案整理之js
- 前端面试 - js隐式类型转换特殊实例
- 前端面试之js相关问题(一)
- (转) 前端面试之js相关问题(一)
- 前端面试之模块化-3、require.js的用法
- Web前端面试指导(二十二):用js实现千位分隔符,怎么实现?
- 前端面试之JS
- 前端面试中的经典js“坑”题十三道
- 前端面试js(语法)
- 阿里巴巴Web前端面试的一道JS题目,求解答!!!
- 前端面试送命题(一)-JS三座大山
- Web前端面试笔试题2——JS(1):函数调用(局部变量/全局变量)
- 前端面试集锦(三)js中的作用域