目标:
能够使用对象的方式处理数据

☞ 代码预解析:

1. 变量提升 :当程序中遇到定义变量后,就会将该变量的定义提升到当前作用域的开始位置,不包括变量的赋值

2. 函数提升:当程序中遇到函数的声明时,那么会将函数的声明提升到当前作用域的开始位置,不包括函数的调用

☞ 对象: 指的是一个具体的事物(人,物品),在程序中对象其实就是对现实生活中具体事物的一个抽象描述。

对象本质: 在程序中保存数据的【容器】

语法:

1. 通过字面量方式创建一个对象(容器)

var 自定义名称 = {

自定义键 : 值,
自定义键 :值

}

2. 通过构造函数创建对象(字面量方式是该种方式的一种简写行式)

语法:
var 自定义对象名 = new Object();

分析构造函数创建对象

1. 构造函数: 本质还一个函数,只不过该函数是用来创建对象的【构造函数的命名是按照帕斯卡命名法】

2. Object()就是js中内置的一个用来创建对象的一个构造函数

3. 关键字new : 用来调用构造函数实现实例化一个对象(创建一个对象)

4. 执行过程:
✔ 先执行 new Object() 在内存堆中开辟一块空间(产生一个内存地址)

✔ 将内存地址 赋值给左侧的变量

✔ 变量就会按照内存地址去实现对象中的代码

3. 通过工厂方式创建对象:将构造函数创建的对象封装到一个函数中

例如:
function createPeople (uName, uAge, uScore) {

var obj = new Object();

obj.userName = uName;

obj.age = uAge;

obj.score = uScore;

return obj;
}

var zs = createPeople('zs', 18, 100);
var ls = createPeople('ls', 22, 90);

console.log(zs);
console.log(ls);

4. 通过自定义构造函数创建对象

☞ 自定义构造函数本质: 还是一个函数(1. 是咱们自己写的一个函数。 2. 创建对象)

☞ 在使用自定义构造函数创建对象的时候,也需要使用关键字 new

备注:
1. 普通的函数遵守驼峰命名法
2. 构造函数遵守帕斯卡命名法

例如:

// 通过自定义构造函数创建对象
function People(name, age, gender) {

this.userName = name;
this.userAage = age;
this.userGender = gender;

this.run = function() {

alert(this.userName +'正在跑步运动中...');
}
}

// 使用该自定义构造函数创建对象
var zs = new People('张三', 18, '男');
var ls = new People('李四', 22, '女');

console.log(zs, ls);

自定义构造函数总结:

1. 在构造函数中返回值可以省略不写

2. 构造函数中的this关键字,谁调用该构造函数,this就指向谁。

3. 如果批量创建对象,那么推荐使用自定义构造函数

4. 如果程序中只是简单的创建个别几个对象,那么可以使用字面量直接创建

获取对象中的值:

✔ 对象名.键的名字

✔ 对象名['键的名字']

备注:
1. 如果要获取属性的值,那么直接 对象.属性名
2. 如果要获取方法的值,那么直接 对象.方法名()

给对象赋值:

✔ 直接在定义对象的时候,以键值对的方式给对象赋值

✔ 通过 对象名.自定义键名 = 值;

✔ 通过 对象名['自定义键名'] = 值;

注意:
1. 对象中保存数据格式是以键值对格式保存的 : 键:值

2. 在对象中用来描述对象基本特征的: 叫属性(名词)
在对象中用来描述对象的行为: 叫方法(是一个函数)

☞ 遍历对象: 通过循环的方式找到对象中的每一个值。

☞ 语法:

for( 键 in 对象 ) {

对象[键]
}

例如:
var obj = {
username : '张三',
userage : 20,
usergender : '男'
}

for( key in obj ) {

console.log(key + ':'+ obj[key]);
}

对象总结:

1. 能够使用四种方式创建对象

2. 能够给创建的对象赋值

对象.键 = 值;
对象['键'] = 值;

3. 获取对象中的值

对象.键;

对象['键'];

4. 遍历对象

for( key in 对象) {

对象[key]
}

5. new : 通过调用构造函数创建对象(实例化)

6. this : 谁调用构造函数,this就指向谁。

7.
对象中的属性: 对象中的属性就是用来描述对象基本特征(名词)

对象中的匿名函数 : 对象中的方法

8. typeof ====> 获取当前变量的数据类型

instanceOf ====》 判断当前对象是通过哪个构造函数创建的

其他扩展部分:

1. 简单数据类型: 在栈上存储

简单数据类型在栈保存的就是一个具体值

2. 复杂数据类型: 在堆上存储

✔ 首先在堆上开辟一块空间 ---- 生成内存地址

✔ 将内存地址保存到栈上

3. 内置对象:js原生的对象。通过查MDN手册,去使用提供的属性及方法。

https://developer.mozilla.org/zh-CN/

定义数组的两种方式;
var ary = new Array();
var ary = [];

☞ 与数学运算相关的内置对象 Math

Math.PI ----》 用来获取圆周率

Math.round(值) ----> 对一个数字进行四舍五入 (得到的是一个整数)

Math.abs(值) ----> 获取一个数字的绝对值

Math.max(值,值) -----> 获取一组数字中的最大值

Math.min(值,值) -----> 获取一组数字中的最小值

Math.pow(x,y) -----》 获取 x 的 y 次 方

☞ 与数组对象相关的方法或属性

1. 通过构造函数创建对象

var ary = new Array();

2. 通过字面量方式创建对象

var ary = [];

3. 获取数组的长度 ary.length

4. 方法:

Array.isArray(ary) 判断一个变量是不是数组,返回 true 或者 false

数组对象名.push(值); 向数组的末尾添加值

数组对象名.unshift(值); 向数组的开始添加值

数组对象名.pop() // 删除数组中最后一个数字,并返回该数字
数组对象名.shift() // 删除数组中第一个值,返回该数字

数组对象名.reverse() // 将数组翻转

数组对象名.join方法('|') // 返回的是一个字符串

indexOf(字符) // 用来获取数组中对应字符的索引位置,如果包含该字符那么就返回其对应的索引位置,如果不包含该字符,那么就返回 -1;

5. 字符串方法

☞ 字符串特性: 不可变性。

☞ 属性

字符串变量.length ====》 获取字符串长度

☞ 方法:

indexOf(字符) ===》 字符在字符串的索引位置(如果有直接返回索引位置),如果没有返回-1

lastIndexOf(字符) ----》 返回指定字符在此字符串中最后一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

replace(a,b) // 用b替换a

1. concat() //拼接字符串 等效于 +

2. slice(strat,end) //从指定位置开始,截取字符串到结束位置,end值取不到

3. substring(start,end) //从指定位置开始,截取字符串到结束位置, end值取不到

4. substr(start,length) //从哪个位置开始,一共要截取多少个

JavaScript基础学习第六天的更多相关文章

  1. JavaScript 基础学习1-day14

    JavaScript 基础学习1 知识预览JavaScript概述二 JavaScript的基础三 JavaScript的对象BOM对象DOM对象实例练习js扩展 JavaScript概述 JavaS ...

  2. 48.javascript基础学习

    javascript基础学习:   http://www.w3school.com.cn/jsref/index.asp jS的引入方式: 1.行间事件:为某一个具体的元素标签赋予js内容,oncli ...

  3. JavaScript 基础学习(二)js 和 html 的结合方式

    第一种 使用一个标签 <script type="text/javascript"> js代码; </script> 第二种 使用 script 标签,引入 ...

  4. JavaScript 基础 学习 (四)

    JavaScript 基础 学习 (四) 解绑事件 dom级 事件解绑 ​ 元素.on事件类型 = null ​ 因为赋值的关系,所以给事件赋值为 null 的时候 ​ 事件触发的时候,就没有事件处理 ...

  5. JavaScript 基础 学习(三)

    JavaScript 基础 学习(三) 事件三要素 ​ 1.事件源: 绑定在谁身上的事件(和谁约定好) ​ 2.事件类型: 绑定一个什么事件 ​ 3.事件处理函数: 当行为发生的时候,要执行哪一个函数 ...

  6. JavaScript 基础 学习 (二)

    JavaScript 基础 学习 节点属性 ​ 每一个节点都有自己的特点 ​ 这个节点属性就记录着属于自己节点的特点 1. nodeType(以一个数字来表示这个节点类型) ​ 语法:节点.nodeT ...

  7. JavaScript 基础 学习 (一)

    JavaScript 基础 学习 获取页面中的元素的方法 作用:通过各种方式获取页面中的元素 ​ 比如:id,类名,标签名,选择器 的方式来获取元素 ​ 伪数组: ​ 长的和数组差不多,也是按照索引排 ...

  8. 几张非常有意义的JavaScript基础学习思维图

    分享几张对于学习JavaScript基础知识非常有意义的图,无论你的JavaScript级别如何,“温故而知新”完全可以从这些图中得到. 推荐理由:归类非常好,非常全面 JavaScript 数组 J ...

  9. HTML JavaScript 基础学习

    HTML 中肯定会用到 JavaScript 的知识点,会点 JavaScript 的基础知识不会吃亏,其实打算去买JavaScript的教程去专门学习一下,但是交给我的时间不多了,记录一点,能会一点 ...

随机推荐

  1. SYN5301型 时间检定装置

      SYN5301型  时间检定装置 夹具概述 我们的夹具可以水平放置测秒表,也可以垂直测秒表,而其他厂家的夹具只能水平放置测,如果想垂直测的话得依靠在墙上或者是其他的物体上来测,这样的检测出来的数据 ...

  2. Linux不重启识别新添加的磁盘

    现网的一台EXSI 下的虚拟机一般在进行配置变更后都会通过重启来识别新增的配置,不过业务侧某台主机因为业务需要无法重启,想通过不重启直接识别护容上去的新磁盘.经测试,发现如下方可以解决. 1.通过ex ...

  3. 并发编程-concurrent指南-Lock-可重入锁(ReentrantLock)

    可重入和不可重入的概念是这样的:当一个线程获得了当前实例的锁,并进入方法A,这个线程在没有释放这把锁的时候,能否再次进入方法A呢? 可重入锁:可以再次进入方法A,就是说在释放锁前此线程可以再次进入方法 ...

  4. 【测试-测试心得】测试发现BUG后,怎么定位问题?

    一.判断前后端 Safari中可以右键,选择“检查元素”,再选择“网络”同样可以抓取到http请求,如图 怎么区分是前端错误还是后端错误? 1.在开发者工具中,如果console中有报错,则表示前端代 ...

  5. 利用Python模拟GitHub登录

    最近学习了Fiddler抓包工具的简单使用,通过抓包,我们可以抓取到HTTP请求,并对其进行分析.现在我准备尝试着结合Python来模拟GitHub登录. Fiddler抓包分析 首先,我们想要模拟一 ...

  6. Java虚拟机详解(三)------垃圾回收

    如果对C++这门语言熟悉的人,再来看Java,就会发现这两者对垃圾(内存)回收的策略有很大的不同. C++:垃圾回收很重要,我们必须要自己来回收!!! Java:垃圾回收很重要,我们必须交给系统来帮我 ...

  7. 关于在记事本写入"\n"不显示换行的原因

    Linux系统下直接使用  "\n"  即可换行 windows下需要使用   "\r\n"

  8. JAVA包装类解析和面试陷阱分析

    包装类 什么是包装类 虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性.没有方法可调用. 沿用它们只是为了迎 ...

  9. Java编程思想:XML

    /* 本次实验需要在www.xom.nu上下载XOM类库 */ import nu.xom.*; import java.io.BufferedOutputStream; import java.io ...

  10. 【基础算法-模拟-例题-玩具谜题】-C++

    原题链接P1563 玩具谜题 这道题依然是一道模拟题目,就简单讲讲坑点: 1.有些时候在转圈的时候要用到它们站成了一个环的性质! 2.小人面朝的方向影响了它们左右的方向! 3.注意考虑顺时针逆时针与小 ...