console.log(ul[0].childElementCount);
- children:获取到所有的子元素节点
console.log(ul[0].children);
- firstElementChild:获取第一个子元素节点
console.log(ul[0].firstElementChild);
- firstChild:获取第一个子节点
console.log(ul[0].firstChild);
- firstElementChild:获取第一个子元素节点
console.log(ul[0].firstElementChild);
- lastChild:获取最后一个子节点
console.log(ul[0].lastChild);
- lastElementChild:获取最后子元素节点
console.log(ul[0].lastElementChild);
兄弟节点的获取方法:
- nextElementSibling:获取该节点的下一个兄弟元素节点
console.log(ul[0].nextElementSibling);
- nextSibling:获取该节点的下一个兄弟节点
console.log(ul[0].nextSibling);
- previousElementSibling:获取该节点的 上一个兄弟元素节点
console.log(ul[0].previousElementSibling);
- previousSibling:获取该节点的 上一个兄弟节点
console.log(ul[0].previousSibling);
创建节点:
语法:
var li_new = document.createElement(“li”);
备注: 元素创建完成后,并不在DOM树中,需要我们手动添加
添加节点:
- appendChild: 添加到目标里的最后一位
目标.appendChild(内容)
ul[0].appendChild(li_new);
- insertBefore:将新节点,添加到已有的节点之前
父节点.insertBefore(新的节点,已有的节点)
ul[0].insertBefore(li_new,ul_li[0]);
备注: 添加到的目标,一定是在页面中已经存在的
删除节点:
- removeChild
指定目标的父元素.removeChild(指定目标)
ul[0].removeChild(ul_li[0]);
- remove
指定目标.remove()
ul_li[0].remove();
替换节点:
替换目标的父元素.replaceChild(新的元素,被替换的元素);
ul[0].replaceChild(meng,ul_li[0]);
克隆节点:
// 需要克隆的目标.cloneNode() ,该方法会将克隆体返回
var meng_two = meng.cloneNode();
nodeName: 返回节点名称
nodeValue: 返回节点属性
nodeType: 返回节点类型
============================================================
闭包的本质: 它就是个函数
概念: 能够访问其他函数内部变量的 函数
条件:
-
在函数中嵌套定义另外一个函数
-
被嵌套的函数(在里面的那个),一定要访问外部函数的变量
-
被嵌套的函数要返回
原理: 通过作用域链
作用: 能持久化 局部变量, 手动 控制局部变量的回收时间
弊端: 不能够大批量的使用,会造成程序加载过慢. 极容易造成内存泄露
返回的方式:
function big(){
var c = 10;
//返回的方式1:
// return function small(){
// console.log©;
// }
// 返回的方式2:
// return function (){
// console.log©;
// }
//返回的方式3:
function small(){
console.log©;
}
return small;
// 函数带着(), 是执行。 不带(), 只是定义
}
var test = big();
test();
==============================================================
作用域链:
先在当前作用域的上下文中查找,找到即执行
如果没有,继续向 上 一层查找,找到即执行。
如查找到全局中,依然没有,报错,阻断程序运行
变量提升:
如果使用了未声明的变量,正常情况会因为找不到而报错
但在使用的下方,出现了它的声明。 会默认将它提升到使用之前。不包括值
先使用,后声明。 该变量的 因变量提升, 可以找到,但值为undefind;
存在的意义: 保证后续任务继续执行,只是失去了 当前功能的值
==============================================================
实质: 没有名字的函数 实质还是一个函数
和普通函数的区别:
-
普通函数是有函数名的, 函数调用需要使用函数名
-
匿名函数没有函数名, 无法通过函数名来调用
匿名的作用:
-
匿名函数可以有效的保证在页面写入js时,不会造成全局变量的污染,就是可以有效的隔离作用域
-
通常我们希望这个函数,只执行一次,就结束时。使用匿名函数的自调用(也叫立即执行函数)
匿名函数调用的两种方式:
-
绑定给一个变量 或者一个事件, 通过他们来调用
-
自调用
小括号1 : 里面存放函数的定义
小括号2 : 代表着调用函数,里面存放实参
// 自调用 写法一 : 官方推荐 的写法
(function (b) {
console.log(b+1);
}(20));
//写法二 :
// (function(a){
// console.log(a+10);
// })(10);
//写法三:
// !function () {
// console.log(“我是自调用的函数”);
// }
//写法四:
// [function () {
//
// }()]
//写法五:
// ~function () {
//
// }();
==============================================================
this指针的指向问题:
- 在普通函数外部调用的时候
var a = 20;// 相当于 window.a = 20
// alert(this); // 指向window
// alert(this.a); // 输出20, 指向 window.a
- 在普通内部调用的时候
function text(){
var a = 10;
// alert(a);
// alert(this.a); // 相当于 window.a
this.a = 50;
this.b = function() {
console.log(this);
}
}
// text(); // text() 相当于 window.text()
- 和new 构造器结合使用
var obj1 = new text();
var obj2 = new text();
var c = obj1.b;
console.log(obj2.a);
console.log(c());
4 对于自执行匿名函数 而言 this的指向 window
备注: 当不希望this指向发生改变的时候,可以定义变量来保存this(例如:拖拽中使用)
===================================================================
如何产生: 在事件发生时,负责处理事件的函数,会接受到一个event对象
备注: 浏览器负责处理事件, js负责告诉浏览器 如何处理
作用: 用来存储 事件源的信息 例如: 鼠标的位置 键盘的编码。
将这些信息提供给开发者, 便于开发者进行编码
event对象的属性:
-
ev.target : 返回 事件源
-
ev.button: 返回鼠标被按下的那个键
-
ev.offsetX : 鼠标在元素上 X轴的位置
-
ev.clientX: 鼠标 在浏览器可视区域 x轴上的位置(左边距)
-
ev.clientY: 鼠标 在浏览器可视区域 y轴上的位置(上边距)
-
ev.keyCode : 返回键盘的编码,以此来确定是哪个键位
=================================================================
事件监听:
添加事件监听: addEventListener()
参数1 : 事件类型
参数2 : 触发事件后执行的函数
参数3 : 布尔值 默认值是 false 事件冒泡 ; true 事件捕获
删除事件监听: removeEventListener()
注意:
-
相同元素调用
-
相同事件名称
-
相同函数名(匿名函数不行,需要全局函数)
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
结尾
正式学习前端大概 3 年多了,很早就想整理这个书单了,因为常常会有朋友问,前端该如何学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。
以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
外链图片转存中…(img-BSUxYwWj-1711949790723)]
[外链图片转存中…(img-zmMZP99m-1711949790723)]
[外链图片转存中…(img-Nwz5OQlX-1711949790724)]
[外链图片转存中…(img-IRr2fdRX-1711949790725)]
[外链图片转存中…(img-hALZobzn-1711949790725)]
[外链图片转存中…(img-GZjX5DAo-1711949790726)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-cy23v71X-1711949790726)]
结尾
正式学习前端大概 3 年多了,很早就想整理这个书单了,因为常常会有朋友问,前端该如何学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。
以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】