欢迎光临散文网 会员登陆 & 注册

JS的PPT学习:复习和细节补充,函数,闭包,原型机制,JSONP跨域访问【诗书画唱】

2021-04-07 17:28 作者:诗书画唱  | 我要投稿

目录:


JSADV1-复习和细节补充.ppt

JSADV2-函数.ppt

JSADV3-闭包.ppt 

JSADV4-原型机制.ppt 

JSADV7-JSONP.ppt

一、单选多选框和下拉框

二、document的querySelector和querySelectorAll方法

三、表单验证以及表单自动提交和手动提交

四、事件对象和冒泡,动态绑定元素的事件

五、JSON.parse和eval








JSADV1-复习和细节补充.ppt START


JSADV

JS复习及细节补充

回顾

JS基本核心语法(ECMAScript)

文档对象模型(DOM)

浏览器对象模型(BOM)

本章目标

复习JS基础知识

补充一些JS的细节问题

输出语句

注释

数据类型

number

string

boolean

undefined

null

object


遍历的两种方式

for

foreach遍历

Dom操作获取元素

document.getElementById

getElementsByTagName

getElementsByClassName

getElementsByName

设置属性

元素对象.属性名 = ‘属性值’

DOM对象的属性和HTML的标签属性几乎是一致的,常用的有src、title、className、href和style,其中className对应就是标签的class属性,但是由于class在JS中是关键字,所以变成了className

设置样式:

    元素对象.style.样式属性 = ‘属性值’

事件绑定(一)

嵌入dom

注意:这样做很是不好,有下列两大缺点,这也是如今在开发中很难见到这样绑定事件的原因。(1)存在一个时差问题,因为用户可能会在HTML元素一出现在页面上就触发相应的事件,但当时的事件处理程序有可能尚不具备执行条件(比如js代码还没有下载下来),由此会引发错误。(2)HTML与js代码紧密耦合。如果要更换事件处理程序,就要改动两个地方:HTML代码和JS代码,这非常不利于后期代码的维护。所以这种方法在开发中基本不用。

事件绑定(二)

直接绑定

注意:这种方式只能给该元素绑定一个事件。不支持多播事件委托。

事件绑定(三)

事件监听

注意:addEventListener()添加事件,removeEventListener()删除事件。可添加多个,执行顺序与添加顺序相同。

事件对象

在触发DOM上的某个事件时,会产生一个事件对象event。这个对象中包含着所有与事件有关的信息。包括导致事件的元素,事件的类型以及其他与特定事件相关的信息。

值类型和引用类型

JavaScript 中的值类型与引用类型的使用是有区别的。这和大部分的高级语言一样。

逻辑或和逻辑与运算符

JS中还包括另外一种逻辑运算,它的表达式结果类型是不确定的,他们是逻辑或(||)和逻辑与(&&),这两个运算符支持短位运算,但是不会强制转换结果为布尔型的值。

两个引用类型的比较

引用类型的等值比较,将直接“比较引用(的地址) ”。也就是说:如果不是同一个变量或其引用,则两个变量不相等, 也不相同。

在对两个引用类型 的比较运算过程中,“==”与“===”并没有任何的不同。


运算优先级

void是一个运算符,所以我们可以计算void 1 + 2的值,void运算符的优先级比+高

,也是一种运算符。

变量的作用域

由于JS的变量作用域只能达到函数一级(而非语句块一级),因此这里声明变量,与在for语句之外声明变量没有什么区别。

缺省对象的指定

JS提供with语句,以使得开发人员可以在一个代码块中显式地指定缺省对象。如果不指定缺省对象,则默认使用宿主程序在全局指定的缺省对 象(在浏览器环境中的缺省对象是 window)。


逗号的二义性

[]的二义性

总结

JS基本语法的复习

一些JS的细节问题




JSADV1-复习和细节补充.ppt END


JSADV2-函数.ppt START


JSADV

函数

回顾

JS的基础知识

JS的细节问题

本章目标

函数

函数概述

在JS中,函数包含一组语句,是JS的基础模块单元,用于代码复用、信息隐藏和组合调用。函数用于指定对象的行为。一般来说,所谓的编程,就是将一组需求分解成一组函数和数据结构的技能。 注意:在JS中,函数就是对象,因此函数可以保存在变量、对象和数组中,也可以当作参数传递给其他的函数,函数的返回值也可以是函数。

创建函数的三种方法

在JS中,可以通过三种方式创建函数:

1、函数声明

2、函数字面量

3、构造函数

函数声明

这种方式定义的函数不属于任何对象,始终是默认的全局对象。

注意:这样声明的函数可以在函数定义前调用。因为在JS的最顶层,都有一个预编译处理机制

函数表达式

这样定义的函数会存储在一个变量中。不能在定义之前调用。

构造函数

通过new Function构造函数。

调用函数的方法

JS中的函数有四种调用方式:

1、方法调用模式 2、函数调用模式 3、构造器调用模式 4、apply调用模式

方法调用

当一个函数保存为对象的一个属性时,我们称它为一个方法。当一个方法被调用时,this被绑定到该对象。

函数调用模式

当一个函数并非一个对象的属性时,它就被当作一个函数来调用,以这种方式调用函数时,this被绑定到了全局对象。

构造器调用模式

因为JS是一门基于原型继承的语言,因此可以在创建对象时直接从其他对象继承属性。如果在一个函数前面带上了new关键字来调用,那么将会创建一个连接到该函数的prototype成员的新对象,同时this会被绑定到这个新对象上。

Apply调用模式

在JS中,函数也是对象,因此函数也可以拥有方法。调用函数的apply方法,需要传入两个参数,第一个参数是绑定到函数中this变量的对象,第二个参数是原函数的参数值列表。

JS函数中的内置对象arguments

  每个JS函数都有一个内置对象,它的作用是:

调用该函数时可以传递任意参数!

arguments对象是一个类似于数组的对象。

arguments对象的length属性:获取函数的实参个数!

利用arguments对象特性,实现模拟函数的重载的效果.

JS函数中的内置对象arguments

arguments.callee

arguments.callee 在哪一个函数中运行,它就代表哪个函数。 一般用在匿名函数中。

在匿名函数中有时会需要自己调用自己,但是由于是匿名函数,没有名字,无名可调,这时就可以使用arguments.callee来调用。


总结

函数


      




JSADV2-函数.ppt END


JSADV3-闭包.ppt START

JSADV

闭包

回顾

函数的三种创建方式

函数的四种调用方法

本章目标

闭包

什么是闭包

闭包是指有权访问另一个函数作用域变量的函数,创建闭包的通常方式,是在一个函数内部创建另一个函数

一个闭包的例子

当在一个函数中定义内部函数时,内部的函数可以访问外部函数的上下文环境,这就被称为闭包。

闭包的难点

判断作用域指向的变量对象是否相同

闭包的难点

判断变量对象中变量的值

执行环境和变量对象在运行函数时生成

一个糟糕的例子

假设在以后的项目中,我们需要对所有的input表单元素绑定一个点击事件。如下所示:

解决这个问题

构造一个帮助函数,对事件处理中的动态的i值进行处理。

闭包的用途

匿名自执行函数

闭包的用途

实现封装

闭包的用途

实现面向对象中的对象,传统的对象语言都提供类的模板机制

总结

闭包的使用




JSADV3-闭包.ppt END


JSADV4-原型机制.ppt START



JSADV

原型机制

回顾

闭包的概念

闭包的作用

本章目标

JS中的原型机制

普通对象和函数对象

凡是通过 new Function() 创建的对象都是函数对象,其他的都是普通对象。

JS中的构造函数

实例的构造函数属性(constructor)指向构造函数

原型对象(一)

在JS中,每当定义一个对象(函数也是对象)时候,对象中都会包含一些预定义的属性。其中每个函数对象都有一个prototype 属性,这个属性指向函数的原型对象。

原型对象(二)

实质上,函数对象的prototype属性就是一个对象,这个对象会自动带有一个constructor属性,该属性就是Stu函数本身。即Stu.prototype.constructor == Stu(有点绕了)

原型对象(三)

我们可以发现:




但是Function.prototype 除外,它是函数对象,但它很特殊,他没有prototype属性

__proto__属性

JS 在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做__proto__ 的内置属性,用于指向创建它的构造函数的原型对象。

new关键字的作用

在JS中new出一个对象的过程分为三步:




1、var s1={}; 初始化一个对象s1。

2、s1._proto_=Stu.prototype;将对象s1的 __proto__ 属性设置为 Stu.prototype。

3、Stu.call(s1);调用构造函数Stu来初始化s1。


总结

原型的理解和运用

      





JSADV4-原型机制.ppt END

JSADV7-JSONP.ppt START




JSADV

JSONP

本章目标

JSONP原理

为什么要使用JSONP(一)

ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,请求执行完后一律不准再次运行回调函数中的js代码。但是我们发现,web页面上调用js文件时则不受是否跨域的影响(不仅如此,我们还发现凡是拥有src这个属性的标签都拥有跨域的能力,比如<script>、<img>、<iframe>

为什么要使用JSONP(二)

如果想通过纯web端(ActiveX控件、服务端代理、属于未来的HTML5之Websocket等方式不算)跨域访问数据就只有一种可能,那就是在远程服务器上设法把数据装进js格式的文件里,供客户端调用和进一步处理。


解决跨域问题的方式

通过jsonp跨域

document.domain + iframe跨域

location.hash + iframe

window.name + iframe跨域

postMessage跨域

跨域资源共享(CORS)

nginx代理跨域

nodejs中间件代理跨域

WebSocket协议跨域

JSONP客户端实现(一)

假设远程服务器eclipse上有一个名为demo的项目,项目的WebContent目录下有一个js/remote.js的脚本文件。

JSONP客户端实现(二)

在本地服务器HBuilder上有一个index.html页面,运行该页面,可以发现脚本顺利运行。

JSONP客户端实现(三)

在index.html页面添加一个函数。

JSONP客户端实现(四)

修改远程服务器eclipse中remote.js的代码:

JSONP客户端实现(五)

如果本地函数很多,那么怎么才能让remote.js知道它应该调用的本地函数名呢?

JSONP客户端实现(五)

在远程服务器eclipse中创建一个servlet,代码入下:

JSONP客户端实现(六)

为了避免每次调用都要写一个<script>标签,我们将本地的js代码修改为动态调用js。

jQuery中的JSONP调用



JSADV7-JSONP.ppt END


JS的PPT学习:复习和细节补充,函数,闭包,原型机制,JSONP跨域访问【诗书画唱】的评论 (共 条)

分享到微博请遵守国家法律