面试考察的是对整个知识体系的把握,所以要多多的总结,不要小看这些一个个的知识点,串在一起的时候,就是大问题了
1 JS中使用typeof能得到哪些类型
考点:JS的变量类型 number boolean string undefined object function
扩展:如何判读一个变量是数组类型
instanceof:判断一个函数是否是一个变量的构造函数
var arr=[1,2,3]
arr instanceof Array //true
这个Array其实是一个构造函数,var arr=[1,2,3]其实就是一个语法糖,真实情况是这样子的var arr=new Array(1,2,3)
扩展:如何理解json
json是JS当中的一个内置对象,有两个常用的API,如下,他不是函数,和Math一样,是一个内置的对象,同时,json也是一种数据格式
JSON.stringify({a:10,b:20})
JSON.parse('{"a:"10","b":"20"}')
扩展:JS当中的内置函数 Object Array Function Boolean String Number Date RegExp Error
2 何时使用 == ?,何时使用 ===?
考点:强制类型转换
扩展:什么时候发生强制类型转换
当你需要判断对象是否有某个属性的时候,就用==
obj.a==null 相当于 obj.a===undefined||obj.a===null
还有一种情况,判读函数的参数,是否有值
function find(a,b){
if(a==null){
}
}
其他的情况下,为了保证不发生强制类型转换,全部用===
什么时候发生强制类型转换?
1)字符串拼接
var a=100+'10' //10010
var a=100+10 //110
2)==符号
'1000'==100 //true
''==false //true
null==undefined //true
3) if 语句
if(100){
console.log("ok") //ok
}
if(''){
console.log("ok") //打印不出来
})
4)逻辑运算
var a="100"&&20 //20
var a=""||20 //20
var a='20'||30 //'20'
有一种方法,可以帮你快速的判读,这个值到底是真还是假
var a=100
console.log(!!a) //true
var b=''
console.log(!!b) //false
3 winow.onload和DOMContentLoaded的区别
考点:浏览器的渲染过程
4.用JS创建10个a标签,点击的时候弹出对应的序号
考点:作用域
5 简述如何实现一个模块加载器,实现类似require.js的基本功能
考点:JS的模块化
6 实现数组的随机排序
考点:JS数组的算法
7 描述一个new对象的过程
function Foo(name,age){
this.name=name
this.age=age
this.class='class-1'
// return this
}var f=new Foo('lucy',20)
第一步:
8.写一个原型链继承的例子
function Animal() {
this.eat = function() {
console.log("eat")
}
}
function Dog(name) {
this.bark = function() {
console.log(name)
}
}
Dog.prototype = new Animal
var dog = new Dog("泰迪")
dog.eat() //eat
这个只是一个演示的例子,但是,我们是不推荐这样子写的,这样子去面试,真的不是一个好的选择
我们来做一个绑定DOM操作的例子
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<a id="box"></a>
<script type="text/javascript">
function GetEle(elem) {
this.elem = document.getElementById(elem)
}
GetEle.prototype.html=function(html){
if(html){
this.elem.innerHTML=html
return this
}else{
return this.elem.innerHTML
}
}
GetEle.prototype.on=function(type,fn){
this.elem.addEventListener(type,fn)
}
var element=new GetEle("box")
element.html("<p>点击我</p>").on('click',function(){
console.log("ok")
})
</script>
</body>
</html>