js高级的总结

JavaScript 高级特性:深度解析 JavaScript 高级特性 阅读详情

通常,通过 JavaScript,您需要操作 HTML 元素。

1、通过 id 找到 HTML 元素

2、通过标签名找到 HTML 元素

3、通过类名找到 HTML 元素

提示:通过类名查找 HTML 元素在 IE 5,6,7,8 中无效。

var x=document.getElementById(“intro”);
var y=document.getElementsByTagName(“p”);
①、改变 HTML 元素的内容 (innerHTML)

document.getElementById(id).innerHTML=new HTML
②、改变 HTML 属性

document.getElementById(id).attribute=new value
document.getElementById(“image”).src=“landscape.jpg”;
③、改变 HTML 样式

document.getElementById(id).style.property=new style

④、添加或删除 HTML 元素

二、DOM 事件

1、Js中的事件

行为,结构,样式分离的页面

一般事件 onclick 鼠标点击时触发此事件

ondblclick 鼠标双击时触发此事件
onmousedown 按下鼠标时触发此事件
onmouseup 鼠标按下后松开鼠标时触发此事件
onmouseover 当鼠标移动到某对象范围的上方时触发此事件
onmousemove 鼠标移动时触发此事件
onmouseout 当鼠标离开某对象范围时触发此事件
onkeypress 当键盘上的某个键被按下并且释放时触发此事件.
onkeydown 当键盘上某个按键被按下时触发此事件
onkeyup 当键盘上某个按键被按放开时触发此事件

①、绑定事件的3种方式

1: 直接写在html标签内声明

这种写法最古老,兼容性最强.属于DOM的lev0级的标准.这个效果,等同于在点击div的时候,执行"t();"这一语句,

在全局范围内执行,因此,t函数内部的this指代全局对象–>window 想操作被点击的DOM对象,用this就不行了.

第2种绑定方式:

DOM对象.onclick = function () {}

这种绑定是把一个DOM对象onclick属性赋值为一个函数,

因此,函数内部的this直接指向该DOM对象.

在这种绑定方式中,只能给一个事件,绑定一个处理函数

即 .onclick = fn1; .onclick = fn2;

最终的效果, 是.onclick = fn2;

如果用函数来调用其他函数的形式

例.onclick = function () {fn1(),fn2()}

那么此时, fn1,fn2中的this又指向window.

如何绑定多个函数, 并令this指向DOM对象

第三种绑定事件的方法:

DOM lev3的事件绑定标准

添加和去除监听事件.

addEventListener(‘事件’,函数); // 第一个参数事件参数, 没有前缀"on", w3c的标准,IE不支持

注意点1: 如果添加了多个事件处理函数, 按"添加时的先后顺序来执行"

注意占2: 事件处理函数中的this 指代 DOM节点自身 (w3c标准)

注意点3: 第一个事件参数,一律把事件名称的’on’去掉 (w3c标准)

去除绑定

removeEventListener(‘事件’,函数)

IE下绑定事件与解除事件的方法

attachEvent(‘事件’,函数) // 注意: 事件 要加on

detachEvent(‘事件’,函数) // 事件依然要加on

总结一下:

W3c addEventListener 与IE的attachEvent()的不同

1: 函数名不同

2: 事件名不同, IE下要加on,w3c不加on

3: 加事件后的执行顺序不同, w3c按绑定事件的顺序来执行, 而IE6,7,8,是后绑定的事件先发生.

4: this的指向, w3c中,绑定函数中的this指向 DOM对象, 而IE6,7,8中,指向window对象

三、事件的捕捉与冒泡模型

在w3c的模型中,

addEventListener 支持 第3个参数来声明事件的模型为冒泡还是捕捉.

如果声明为 true,则为捕捉方式

如果声明为false, 或者不声明, 则为冒泡方式

注意: IE的attchEvent 没有第3个参数,不支持捕捉模型

事件对象的概念:

当事件对应的函数被触发时, 函数会接收到一个事件参数, // w3c标准

例 xx.onclick = function (ev) {alert(ev)}

点击后,ev 参数就代表单击那一瞬间的"各个参数",以一个对象的方式传过去.

对于IE, 当事件发生的瞬间,事件对象赋值给window.event属性

四、事件的中断

如何中断事件的传播???

在w3c: 事件.stopPropagation();

在IE中, 事件对象.cancelBubble = true;

cancelBubble = true //IE取消冒泡

stopPropagation(); // w3c取消冒泡

returnValue = false; // IE取消事件效果

preventDefautl() ;// w3c取消事件效果

取消事件的默认效果

事件对象.preventDefault(); // 阻止事件的默认效果, w3c方法

事件对象.returnValue = false; // 设置returnValue 的属性值为false;

五、Js 作用域链(是指AO链)

1:参数

2:局部变量声明

3:函数声明

  • 函数声明与函数表达式的区别

表达式必有返回值,把返回值(即匿名函数)赋给了一个变量.

此时 就是普通的赋值过程.

①、js并不是一句一句顺序执行的,先进行词法分析

This, 与 arguments

当一个函数运行的时候,函数内部能引用的变量有这么几种

AO、arguments、this

对于 arguments和this, 每个函数都有自己独有的arguments和this, 且不进行链式查找

arguments是什么?

答:1:arguments是收到的实参副本

2:收到实参收集起来,放到一个arguments对象里

在词法分析中, 首先按形参形成AO的属性,值为undefined

当实参传来时, 再修改AO的相应属性.

t(a,b,c){},

调用时: t(1,2,3,4,5) 个参数

此时 , AO属性只有a,bc,3个属性, arguments里有1,3,3,4,5, 所有的值

对于超出形参个数之外的实参, 可以通过arguments来获得

3:arguments 的索引 从 0, 1,2,…递增,与实参逐个对应

4:arguments.length 属性代表实参的个数

5:Arguments一定不是数组, 是长的比较像数组的一个对象,虽然也有length属性

6:Arguments每个函数都会有,因此,arguemnts只会在内部找自身的arguments,

无法引用到外层的arguments

This是谁

This是指调用上下文

针对函数的应用场景来讨论

函数的4种调用方式

1:函数方式

直接调用函数名,或函数表达式的返回值,

This指代全局对象,window

2:属性方式(对象方法方式)

This指代该对象(方法的属主)

3:构造器方式

通过 new 函数 名() , 来创建对象

在js里, 构造函数与对象的关系比较松散,

对象就是"属性->值"的集合

构造器的作用,是制造一个对象,把this指向该对象,

4:call,apply方式

函数本身即是对象,对象就有方法

函数名.call(对象,参数1,参数2,参数3);

以fn.call(obj,‘a’,‘b’);

实际效果相当于

1:fn内部的this指向了obj

2:fn(‘a’,‘b’);

Apply的效果与call一样, 只不过传参时,把所有参数包装在数组里,传过去.

例 fn.call(obj,‘a’,’ b’) ===> fn.apply(obj,[‘a’,‘b’]);

还有一种改变this的方法

With 语句

With(对象) {

语句1

语句2

…

}

在with内部的语句,就把参数中的对象当成的上下文环境.

六、词法分析

js执行顺序

1:词法分析阶段

先把接收到的参数放到激活对象上

再对函数体中代码作分析

a: var xx = yy;

做法:声明一个xx属性在激活对象上,

但不赋值,如果已经有xx,则不无动作.

b:function ttt() {

}

做法:直接声明ttt属性,

且内容是函数体

2:执行语句阶段

六、Js面向对象

属性,方法–>对象

"类"能做到封装,继承,多态,

"类"的静态方法

1: js中的对象是什么?

答:js的对象就是键值对的无序集合

2:种创建对象的方法

①、通过字面量来创建对象

例:{age:22,hei:180}

{}->空对象,没有属性

②、通过 new Object([value]);

通过构造函数来创建对象(和第2种没区别,因为Object就是系统内建的构造函数)

七、Js面向对象中的封装

javascript语言中,没有现成的私有属性/方法机制,

但可以通过作用域来模拟私有属性,私有方法

对象的属性外界是可读可写的, 如何来达到封装的目的?

答:通过闭包+局部变量来完成

在构造函数内部声明局部变量, 和普通方法,

因为作用域的关系,只有构造函数内的方法,才能访问到局部变量.

而方法对于外界是开放的,因此可以通过方法来访问局部变量.

在这里插入图片描述

在查找属性或方法的过程中, 沿着原型链来查找属性,

对象->原型->原型的原型…->空对象–>NULL

原型形成一条链

这个查找属性的方式,称为js的原型链

①、原型冒充的方式来完成继承

在这里插入图片描述

复制继承, 又称对象继承,其实就是复制父对象的属性到子对象身上

在这里插入图片描述

八、Js面向对象中的静态属性或者静态方法

在这里插入图片描述

从豆浆机–>制造豆浆的流程看, 豆浆机充当的是构造函数的角色.

如果单独看豆浆机本身, 豆浆机也是一部机器,也是一个对象,也可以有属性和方法.

那么,豆浆机作为对象时的属性和方法,就相当于类的静态属性,静态方法.

十、闭包

一句话说闭包:

函数的作用域,不取决于运行时的环境,

而取决于函数声明时的环境.

典型应用:

闭包与局部作用域模拟私有属性

闭包与匿名函数完成"不受干扰的变量"

在这里插入图片描述

①、闭包(4) 闭包+匿名函数

在这里插入图片描述

JavaScript高级实战教程,带你深入学习JS高级应用 在互联网发展的早期,JavaScript就已经成为支持网页内容交互体验的基础技术。随着时间推移,JavaScript业已升级成为互联网的核心技术。 长期以来,我都在学习JavaScript。学JS一时爽,一直学习一直爽。 在学习过程中,接触很多学习资料,图书、视频等不一而足。 今天分享给大家的就是动力节点最新的JavaScript高级篇教程 JavaScript高级主要学习: 继承和原型链 严格模式 JavaScript 类型数组 内存管理 并发模型以及事件循环 JavaScript课程介 阅读详情

相关推荐

JavaScript | 【高级】黑马程序员前端JavaScript入门到精通全套视频教程,javascript核心进阶ES6语法、API、js高级等基础知识和实战教程

JavaScript | 【高级】黑马程序员前端JavaScript入门到精通全套视频教程,javascript核心进阶ES6语法、API、js高级等基础知识和实战教程

这里有一只小马吖 1578

JavaScript高级知识汇总(高级篇)

JavaScript知识总结(高级篇) 1.深入基础 1.1数据类型 1.分类: -基本类型 -String:任意字符串 -Number:任意的数字 -boolean: true/false -undefined:未定义 -null:空 -引用(对象)类型 -Object:任意对象 -Function:一种特别的对象(可以执行) -Array:一种特别的对象(数值下标,内部数据是有序的) 2.判断: -typeof: 可以判断:undefined、数值、字符串、布尔值 不能判断: null与object

ZS74520的博客 1万+

Time-Interleaved Analog-to-Digital Converters

  这篇论文提供了时间交错模数转换器的教程回顾。在解释了偏置、增益、定时和其他不匹配对变换器性能的影响后,给出了目前解决不匹配问题的方法。论文最后总结了时间交错模数转换器的现状。 1.简介   时间交错模数转换器(ADC)将多个子ADC组合成一个ADC系统,可以实现比单独的子ADC[1]更快的采样速率。历史上,时间交错adc的主要缺点是需要紧密匹配子adc[2]的特性。近年来,由于应用需要非常宽带信号的数字化、功率高效子adc的可用性以及由深亚微米互补金属氧化物硅(CMOS)技术实现的微调技术,使得时间交错

weixin_44537056的博客 6732

JavaScript教程(高级)

函数声明方式function关键字(命名函数);函数表达式(匿名函数);(此处的Function()是一个构造函数);var fn= new Function('参数1','参数2',...,'函数体');Function里面参数都必须是字符串格式;第三种方式执行效率低,也不方便书写因此较少使用;所有函数都是Function的实例(对象);函数也属于对象;< script > // 函数的定义方式 // 1、自定义函数(命名函数);} // 2、函数表达式(匿名函数);

m0_56752010的博客 3008

安装keil5(MDK)及导入pack包教程

首先说明的是我安装的Keil版本为Keil V5.29.0.0 1、安装软件 右键管理员权限运行安装包 设置安装路径以及pack的存放路径 随意输入First Name和E-mail 安装驱动 完成软件安装,然后可以先关闭弹出的Pack Install(一会再添加) 2、激活一下软件 打开桌面的Keil File → License Management(我之前注册过了) 右...

hrx-@@ 10万+

别再魔改LWIP了!用STM32CubeMX配置F407的TCP保活(KeepAlive)与自动重连

本文详细介绍了如何通过STM32CubeMX配置STM32F407的LWIP协议栈,实现TCP保活(KeepAlive)与自动重连功能,解决网络异常断开问题。文章提供了从基础环境配置到自动重连架构设计的完整指南,帮助开发者构建高可靠的网络连接机制,适用于工业物联网和嵌入式设备开发。

weixin_27038245的博客 234

Javascript学习笔记

Javascript学习笔记一、构造函数和原型1、概述2、构造函数1、利用构造函数创建对象2、静态成员和实例成员3、构造函数的问题4、构造函数原型prototype5、对象原型__proto__6、constructor构造函数7、构造函数、实例、原型对象三者之间的关系8、原型链9、原型链成员查找规则10、原型对象this指向11、扩展内置对象二、继承1、call()2、借用构造函数继承父类型属性3、借用原型对象继承父类型方法三、ES5中的新增方法1、数组方法①forEach()②filter()③some

阿远的博客 1005

vscode+keil嵌入式软件开发全流程

vscode+keil嵌入式软件开发全流程

AspringQ的博客 6782

【JavaScript】JS高级语法

变量与函数,作用域,定义变量,作用域链,闭包,预解析,let提升,函数参数,箭头函数,解构赋值,数组解构,对象解构,对象,字面量创建对象,构造函数,自定义构造函数,静态成员和实例成员,数据类型,引用类型,Object,Array,RegExp,包装类型,String,Number,Boolean,原型对象,原型链,this指向,普通函数,严格模式,箭头函数,改变函数的this指向,call,apply,bind,class关键字(类),封装,继承,浅拷贝,深拷贝

m0_64538862的博客 2808

Linux CentOS7文件系统(/dev/var)的容量扩充

原因是之前安装docker后,再想安装Nessus,系统说home、var文件系统的内存都不够。

JHoanna的博客 3226

CAS5和CAS6自定义异常提示消息

CAS自定义异常提示消息

weixin_42949219的博客 979

JS javascript 中的高级知识

JS前两章  讲的都是基础知识 本章讲解一下JS中不同于Java的高级知识: JS函数创建的三种方法:

CaiCai_1908的博客 727

SXU—软件测试方法和技术-朱少民-第三部分 软件测试方法大题汇总-附考点和相关习题及解答

软件测试方法和技术-朱少民-第三部分 软件测试方法—-最少测试用例个数,强一般弱一般强健壮、边界值分析、ns流程图、白盒逻辑覆盖代码、等价类划分,逻辑组合(条件)覆盖,计算圈复杂度等—附考点和相关习题及解答

weixin_63597914的博客 2212

JS 高级用法:像大神一样玩转 JavaScript

前言众所周知,JavaScript是一种非常流行的编程语言,它已经成为了网页开发的必备技能。但是,在我们从事JavaScript编程的时候,我们却没有完全发掘和利用它的全部潜力。在本文中,我们将分享一些高级的JavaScript技巧,希望帮助掘友们更好地理解和掌握JavaScript编程。关于JS高级用法在学习JavaScript的过程中,我们必须了解一些基础知识,如变量、函数、类、循环等。这些基...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 146

基于卷积神经网络的球罐结构损伤识别

球罐结构损伤识别方法研究 摘要:本研究针对球形储罐(球罐)结构健康监测需求,提出基于卷积神经网络(CNN)的损伤识别方法。通过ANSYS有限元仿真构建包含5种裂纹深度的500组振动信号数据集,设计包含卷积层、池化层和全连接层的CNN网络架构。实验结果表明,该方法在训练集和测试集上分别达到98.4%和96.0%的准确率,验证了其在球罐焊缝损伤识别中的有效性。研究提供了完整的MATLAB实现代码,为球罐结构智能化监测提供了技术参考。 关键词:球罐结构;卷积神经网络;损伤识别;振动信号;深度学习

AI的内部世界的博客 120

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JS高级之JavaScript简介

JS高级系列是对JavaScript高级程序设计的总结。 一、基本概念 1.最早的JavaScript版本: Netscape公司的Netscape Navigator中的JavaScript 微软的Internet Explorer(IE)的JScript 2.JavaScript内容:(区别于ECMAScript) 核心:ECMAScript(只是语言的描述,包含语法、类型、语句、关...

喵酱的笔记本 650

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

JavaScript高级实战教程,带你深入学习JS的高级应用

  在互联网发展的早期,JavaScript就已经成为支持网页内容交互体验的基础技术。随着时间推移,JavaScript业已升级成为互联网的核心技术。   长期以来,我都在学习JavaScript。学JS一时爽,一直学习一直爽。   在学习过程中,接触很多学习资料,图书、视频等不一而足。   今天分享给大家的就是动力节点最新的JavaScript高级篇教程   继承和原型链严格模式JavaScript 类型数组内存管理并发模型以及事件循环   JavaScript的高级课程,适用于已经学习了Jav

woliuqiangdong的博客 396

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

js高级编程_Java和JavaScript高级编程之间有什么关系?

点击蓝字关注我们关于Java和JavaScript高级编程的关系,其实这是一个很经典的问题,也是一个很有趣的问题;关于这个问题,在程序员吐槽大会上,有一个程序员是这样说的:“Java和JavaScript的关系就好比是周杰和周杰伦的关系”。其实,Java和JavaScript高级编程真没什么关系,真要说有关系,那也知识命名上的关系。首先,Java和JavaScript都是高级编程语言...

weixin_39861823的博客 231

JS高级用法:像大神一样玩转JavaScript

众所周知,JavaScript是一种非常流行的编程语言,它已经成为了网页开发的必备技能。但是,在我们从事JavaScript编程的时候,我们却没有完全发掘和利用它的全部潜力。在本文中,我们将分享一些高级的JavaScript技巧,希望帮助掘友们更好地理解和掌握JavaScript编程。在本文中,我们介绍了一些JavaScript的高级知识点,如高级数据结构和算法、函数式编程、异步编程和面向对象编程。我们还提供了一些代码示例和实战案例,让掘友们更好地理解和掌握这些技术。

web全栈开发的博客 402

javaScript高级总结

本人小白,如有不对,请求指出,谢谢大佬

zhoulib__的博客 208

js--JavaScript高级总结

前言 之前几篇博客都介绍了JavaScript的高级部分,所以对JavaScript的这些已经有了初步的认识,所以,这篇博客将JavaScript高级部分大致总结一下。 内容 获取HTML中所需要的信息 获取任何东西,在JavaScript中都需要用到正则表达式,所以这方面需要好好学学,现在直接上代码: &lt;script type="text/javascript"&gt; ...

罗俊 484

Js高级总结2 JavaScript函数高级

一个代码段所在的区域分类 全局作用域 函数作用域 块级作用域(ES6才有)作用 隔离变量 不同作用域下同名变量不会冲突。

weixin_54372875的博客 1011

Javascript高级—深入JS模板字符串的高级用法

标签模板是模板字符串的高级特性之一,它允许我们定义一个函数来处理模板字符串。这个函数会接收两个参数:一个是由模板字符串中的文本部分组成的数组,另一个是由模板字符串中的表达式部分组成的数组。通过这两个参数,我们可以实现自定义的字符串处理逻辑。// 输出: [ 'Hello, ', ' world ', '!' ]// 输出: [ 'Alice', 30 ]return `${// 输出: [ 'Hello, ', ' world ', '!

小牛itbull的博客 694

终极指南:如何用AES-JS实现JavaScript高级加密

想要在JavaScript项目中实现专业级的数据加密?AES-JS就是你的理想选择!这个纯JavaScript实现的AES加密库,为前端和后端开发提供了完整的加密解决方案。无论你是需要保护用户敏感信息、确保数据传输安全,还是构建需要加密功能的Web应用,AES-JS都能满足你的需求。🚀 ## 🔑 AES-JS核心功能特性 AES-JS是一个轻量级且功能强大的JavaScript加密库,支持

gitblog_01131的博客 622
上一篇: jquery小结
下一篇: jQuery easyui(上)
薚&阳
博客等级 码龄7年 0粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值