前端基础巩固知识五

二、JS基础

1、javascript的typeof返回哪些数据类型

object number function boolean underfind string
typeof null;//object
typeof isNaN;//
typeof isNaN(123)
typeof [];//object 
Array.isARRAY(); es5
toString.call([]);//”[object Array]”
var arr=[];
arr.constructor;//Array

2、例举3种强制类型转换和2种隐式类型转换?

强制(parseInt,parseFloat,Number())
隐式(==1==1//true
null==undefined//true

3、split() join() 的区别

前者是切割成数组的形式,
后者是将数组转换成字符串

4、数组方法pop() push() unshift() shift()

push()尾部添加
pop()尾部删除
unshift()头部添加
shift()头部删除

5、事件绑定和普通事件有什么区别

传统事件绑定和符合W3C标准的事件

div1.onclick=function(){
    
    };
<button  onmouseover=""></button>

1、如果说给同一个元素绑定了两次或者多次相同类型的事件,那么后面的绑定会覆盖前面的绑定
2、不支持DOM事件流 事件捕获阶段目标元素阶段=>事件冒泡阶段

addEventListener
1、如果说给同一个元素绑定了两次或者多次相同类型的事件,所以的绑定将会依次触发
2、支持DOM事件流的
3、进行事件绑定传参不需要on前端
addEventListener(“click”,function(){},true);//此时的事件就是在事件冒泡阶段执行

ie9开始,ie11 edge:addEventListener

ie9以前:attachEvent/detachEvent
1、进行事件类型传参需要带上on前缀
2、这种方式只支持事件冒泡,不支持事件捕获
事件绑定是指把事件注册到具体的元素之上,普通事件指的是可以用来注册的事件

6、IE和DOM事件流的区别

1.执行顺序不一样、
2.参数不一样
3.事件加不加on
4.this指向问题

IE9以前:attachEvent(“onclick”)、detachEvent(“onclick”)
IE9开始跟DOM事件流是一样的,都是addEventListener

7、IE和标准下有哪些兼容性的写法

var ev = ev || window.event
document.documentElement.clientWidth || document.body.clientWidth
var target = ev.srcElement||ev.target

8、call和apply的区别

call和apply相同点:
都是为了用一个本不属于一个对象的方法,让这个对象去执行

toString.call([],1,2,3)
toString.apply([],[1,2,3])
Object.call(this,obj1,obj2,obj3)
Object.apply(this,arguments)

9、b继承a的方法

考点:继承的多种方式
1.原型继承:
2.构造函数继承:
3.call、apply实现继承:
继承的多种方式

10、JavaScript this指针、闭包、作用域

this:指向调用上下文
闭包:内层作用域可以访问外层作用域的变量
作用域:定义一个函数就开辟了一个局部作用域,整个js执行环境有一个全局作用域

11、事件委托是什么

符合W3C标准的事件绑定addEventLisntener /attachEvent
让利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行!

12、闭包是什么,有什么特性,对页面有什么影响

闭包就是能够读取其他函数内部变量的函数。
闭包的缺点:滥用闭包函数会造成内存泄露,因为闭包中引用到的包裹函数中定义的变量都永远不会被释放,所以我们应该在必要的时候,及时释放这个闭包函数

13、如何阻止事件冒泡和默认事件

e. stopPropagation();//标准浏览器
event.canceBubble=true;//ie9之前
//阻止默认事件:
//为了不让a点击之后跳转,我们就要给他的点击事件进行阻止
return false 
e.preventDefault();

14、添加 删除 替换 插入到某个接点的方法

obj.appendChild()
obj.insertBefore() //原生的js中不提供insertAfter();
obj.replaceChild()//替换
obj.removeChild()//删除

15、javascript的本地对象,内置对象和宿主对象

本地对象为array obj regexp等可以new实例化
内置对象为gload Math 等不可以实例化的
宿主为浏览器自带的document,window 等

16、document load 和document ready的区别

Document.onload 是在结构和样式加载完才执行js
window.onload:不仅仅要在结构和样式加载完,还要执行完所有的样式、图片这些资源文件,全部加载完才会触发window.onload事件
Document.ready原生种没有这个方法,jquery中有 $().ready(function)

17、”==”和“===”的不同

前者会自动转换类型
后者不会

1==”1”
null==undefined

===先判断左右两边的数据类型,如果数据类型不一致,直接返回false
之后才会进行两边值的判断

18、javascript的同源策略

一段脚本只能读取来自于同一来源的窗口和文档的属性,这里的同一来源指的是主机名、协议和端口号的组合
http,ftp:协议
主机名;localhost
端口名:80:http协议的默认端口
https:默认端口是8083
同源策略带来的麻烦:ajax在不同域名下的请求无法实现,
如果说想要请求其他来源的js文件,或者json数据,那么可以通过jsonp来解决

19、编写一个数组去重的方法

var arr=[1,1,3,4,2,4,7];
=>[1,3,4,2,7]
一个比较简单的实现就是:
1、先创建一个空数组,用来保存最终的结果
2、循环原数组中的每个元素
3、再对每个元素进行二次循环,判断是否有与之相同的元素,如果没有,将把这个元素放到新数组中
4、返回这个新数组

function oSort(arr) {	
	var result ={};
	var newArr=[];
	for(var i=0;i<arr.length;i++){
		if(!result[arr]) {
		newArr.push(arr)
		result[arr]=1
		}
	}
	return newArr
}

猜你喜欢

转载自blog.csdn.net/u013034585/article/details/105089603