1、$().ready() 与JavaScript中 window.onload事件的区别
页面加载完成有两种事件,一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件),二是onload,指示页 面包含图片等文件在内的所有元素都加载完成。(可以说:ready 在onload 前加载!!!)
一般样式控制的,比如图片大小控制放在onload 里面加载;
而:jS事件触发的方法,可以在ready 里面加载;
2、什么是$()函数
$() 函数是 jQuery() 函数的别称。$() 函数用于将任何对象包裹成 jQuery 对象,接着你就被允许调用定义在 jQuery 对象上的多个不同方法。你可以将一个选择器字符串传入 $() 函数,它会返回一个包含所有匹配的 DOM 元素数组的 jQuery 对象。
3、forEach源码
Array.prototype.myforEach=function(callback,thisArg){
var len = this.length;
for(var i = 0; i<len;i++){
callback.call(thisArg,this[i], i, this);
}
}
Array.prototype.myforEach1 = function(callback,thisArg){
var len = this.length;
callback = callback.bind(thisArg);
for(var i =0;i<len;i++){
callback(this[i],i,this);
}
}
4、浅克隆和深克隆的函数封装
/*
* @实现 数组深度与浅度克隆
*/
function clone(obj,deep){
//判断传进来的obj为数组、对象、还是属于基本类型的值
if(Array.isArray(obj)){
//判断是否要进行深度克隆
if(deep){
var newArr = [];
// 通过递归数组将数据添加到newArr并返回
for(let i = 0;i<obj.length;i++){
newArr.push(clone(obj[i],deep))
}
// 递归结束返回结果
return newArr;
}else{
return obj.slice();
}
}else if(typeof(obj)=='object'){
var newObj={};
for (var prop in obj){
if(deep){
newObj[prop] = clone(obj[prop],deep)
}else{
newObj[prop] = obj[prop]
}
}
// 递归结束返回结果
return newObj
}else{
return obj
}
}