#js面试
##几个面试题
- js中使用typeof能得到哪些类型?
值类型、引用类型
typeof只能区分值类型和函数,其它类型一律为Object
强制类型转换:
1、字符串拼接
2、==
3.、if语句
4、逻辑运算 &&前面如果是true继续走后面、||前面是false继续走后面、!!双非转化 - == 和 ===
jquery推荐写法:
null或undefined使用 ==其它使用 ===
obj.a == null相当于 obj.a === null||obj.a===undefined - js有哪些内置构造函数 类似于java中内置类
Object Array Boolean Number String Function Date RegExp Error
Math是内置对象 - 实现一个模块加载器,实现类似require.js功能
- 实现数组随机排序
- 如何理解JSON
类似于Math也是内置js对象只有两个API parse stringify
原型和原型链
题目:
- 如何判断变量是数组类型
instance of - 写一个原型链继承的例子
- new一个对象的过程
创建一个新对象、this指向这个新对象、执行代码及对this赋值、返回this - zepto(或其他框架)如何使用原型链
阅读zepto源码
但不能埋头苦钻
知识点:
- 构造函数
new过程:this 变成空对象,默认return this 把空对象负值给对象名 - 构造函数扩展
{} [] function 的构造函数 Object(),Array(),Function()
function a() 相当于 var a = new Function() - 原型规则和实例
5条原型规则:
1、所有的引用类型,都具有对象特性,即可自由扩展属性(除了null之外)
2、都有__proto__属性(隐式原型),指向一个普通对象
3、所有的函数,都有个一个prototype属性(显示原型),属性值也是一个普通对象
4、所有的引用类型,__proto__属性指向它构造函数的“prototype”属性值
5、当试图得到一个对象的某个属性时,如果这个对象本身没有这个属性,那么去找它的__proto__中去找。
补充:
var item
for(item in f){
//高级浏览器中已经在for in中屏蔽了来自原型的属性
//但是这里建议大家还是加上这个判断以保证程序的健壮性
if(f.hasOwnProperty(item)){
console.log(item)
}
}
- 原型链
f.totring() //要去f.__proto__.__proto__中去查找
- instanceof
判断一个函数是否是一个变量的构造函数
判断原理是对象的隐式原型一层一层能否找到对应构造函数的显示原型
变量 instanceof Array