发表于: 2019-04-04 23:15:41

1 835


今天完成的事:

1.写JS任务一

2.学习了引用类型和基础类型的区别

3.准备小课堂PPT,做了BFC的DEMO,又学习了一次,不一样的感觉

4.写《什么是接口》的PPT,老大委派。。 顺便学习一下关于接口的知识



明天的计划:

NO.1——完成《什么是接口》的PPT,提交给老大审核

1.继续学习JS任务一

2.学习数组的方法

3.计时器,延时器学习

4.onclick 和 click



遇到的问题:

1.获取九宫格的数组,我一直没想到如何把九个格子的属性和数组联系起来,后来才发现,原来DOM节点获取到box的class之后,就会自动生成九个数组,这时候只要用Math()方法随机取三个,然后修改颜色,就可以达到效果。这个逻辑一开始没搞明白,一直在打转儿



收获:


基本类型有哪些?


1、undefined 类型表示不存在定义,声明变量但没有初始化,这个变量的值就是undefined; 注意:在任何一个引用变量值设置为undefined都是错误的
2、null 类型,表示一个值被定义了,定义为空值; 使用场景为 定义变量准备在将来用于保存对象;所以引用值可以是null而不会是undefined;
undefined和null的区别:js诞生的时候只设置了null作为“无”的值。最初的设计是null是表示一个“无”的对象,转为数值时为0; | undefined表示“无”的原始值,转为数值时为NaN;红宝书上说引入undefined就是为了正式的区分空对象指针与未经初始化的变量,变量设置为null就是空对象指针,没有设置就是未经初始化!
3、Boolean类型,字面值为true和false
4、number类型,字面量格式可以是十进制、八进制(八进制第一位必须是0)、十六进制(前两位必须是0x)

5、String类型 由零个或多个16位Unicode字符组成的字符序列


6、symbol类型,ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是ES6 引入Symbol的原因   《ES6  P108》

以上这几种数据类型是按值访问的, 因为可以操作保存在变量中的实际的值


引用类型有哪些

引用类型统称为object类型,细分的话有:Object 类型、Array 类型、Date 类型、RegExp 类型、Function 类型 等。


两种类型在添加属性时候的区别

1、引用类型可以动态的给添加属性,

2、但是基本类型的值是不可变也不可以复制的 


变量的不同内存分配
原始值:存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。这是因为这些原始类型占据的空间是固定的,所以可将他们存储在较小的内存区域 – 栈中。这样存储便于迅速查寻变量的值。

引用值:存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存地址。这是因为:引用值的大小会改变,所以不能把它放在栈中,否则会降低变量查寻的速度。相反,放在变量的栈空间中的值是该对象存储在堆中的地址。地址的大小是固定的,所以把它存储在栈中对变量性能无任何负面影响。


两种类型在复制值的什么有什么区别?
基本类型复制值的时候,会重新在变量对象上创建一个新值,然后把值赋值到新变量分配的空间上来(理解为栈中的空间)

引用类型复制时,也会在储存在变量对象中的值复制一份放到为新变量分配的空间上来,但是不同的是新复制的值是一个指针,指向原值所在堆内存中的地址


两种类型在传递值的时候有什么区别?
结论 没有差别,红宝书70页在传递参数章节的第一句话就明确表明 “ECMAScript中所有的函数都是按值传递的”

高程P70总结: 访问变量按值和按引两种方式,而参数只能按值传递   (还无法体会深层的意思)


问题:
1、值传递是什么?

当我们使用=将这些变量赋值到另外的变量,实际上是将对应的值拷贝了一份,然后赋值给新的变量。我们把它称作值传递


2、对象是通过什么传递的?

对象是通过引用传递,而不是值传递。也就是说,变量赋值只会将地址传递过去。


3、==和===在比较时有什么区别?
对于引用类型的变量,==和===只会判断引用的地址是否相同,而不会判断对象具体里属性以及值是否相同。因此,如果两个变量指向相同的对象,则返回true。

---------------------------------------------


PPT内容节选


什么是接口?

接口是后端处理数据返回的一个连接处,前端通过这个接口可以拿到后端的数据,否则我们的数据就是静态的,我们写代码的,肯定是以数据库里面的数据为主的,要不然就是假代码了

我们可以把接口比喻成一个取款机,前端就是去取钱的,后端是放钞票的,如果前后端不配合,前端一毛钱也拿不到,或者我们就自己塞几张白纸进去,当真钞来拿(假数据)

总结: 接口就是前后端交互的一个载体

分前端 后端

前端就是 安卓 IOS  JS

后端就是 逻辑代码
 

什么叫Ajax?

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。



思考:Ajax的出现时用来解决什么问题?

Ajax不需要接口,直接用JS发送一个请求,然后就可以得到服务器的内容,这样最大的好处就是——页面不会不停的跳转,而是在一个页面完成,大部分一样的地方不需要重新加载(例如,顶部和底部),改善了用户体验

总结:1.减少数据获取量   2.用户不觉得页面在不停的跳转  


思考:我们如何发送一个Ajax呢?

1. 创建一个对象 XMLHttpRequest

var xhr = new XMLHttpRequest();为了支持ie6以及更早的版本,要 var xhr=new ActiveXObject()

2.监听请求成功后的状态变化

3.设置请求参数

4.发起请求

5.操作DOM,实现动态局部刷新




返回列表 返回列表
评论

    分享到