目录
深入对象
创建对象的三种方式
-
利用对象字面量创建对象
2.利用 new Object 创建对象
3.利用构造函数创建对象
利用构造函数创建对象
构造函数 :是一种特殊的函数,主要用来初始化对象
使用场景:常规的{...}语法允许创建一个对象。比如我们创建了佩奇的对象,继续创建乔治的对象还需要重新写一 遍,此时可以通过构造函数来快速创建多个类似的对象。
构造函数在技术上是常规函数。 不过有两个约定: 1.它们的命名以大写字母开头。 2.它们只能由"new"操作符来执行。
构造函数语法:大写字母开头的函数
以上例子,new Pig是新的对象,this指向的new.Pig,构造函数返回的新的对象也是naw Pig
常量peppa用来储存新的对象
实例化对象的过程:面试题
说明: 1.创建新空对象 2.构造函数this指向新对象 3.执行构造函数代码,修改this,添加新的属性 4.返回新对象
说明: 1.使用new关键字调用函数的行为被称为实例化 2.实例化构造函数时没有参数时可以省略() 3.构造函数内部无需写return,返回值即为新创建的对象 4.构造函数内部的return返回的值无效,所以不要写return 5.new Object() new Date()也是实例化构造函数
总结
1.构造函数的作用是什么?怎么写呢? 构造函数是来快速创建多个类似的对象 大写字母开头的函数 2.new关键字调用函数的行为被称为? 实例化 3.构造函数内部需要写return吗,返回值是什么? 不需要 构造函数自动返回创建的新的对象
实例成员&静态成员
实例成员
通过构造函数创建的对象称为实例对象,实例对象中的属性和方法称为实例成员。
静态成员挂在构造函数身上,实例成员挂在实例对象身上
说明:
1.实例对象的属性和方法即为实例成员 2.为构造函数传入参数,动态创建结构相同但值不同的对象 3.构造函数创建的实例对象彼此独立互不影响。
静态成员
构造函数的属性和方法被称为静态成员
说明: 1.构造函数的属性和方法被称为静态成员 2.一般公共特征的属性或方法静态成员设置为静态成员 3.静态成员方法中的this指向构造函数本身
总结
1.什么是实例成员? 实例对象的属性和方法即为实例成员 2.什么是静态成员? 构造函数的属性和方法被称为静态成员
内置构造函数
内置构造函数就是浏览器自带的内置构造函数,这个构造函数里面有一些属性和方法
比如下面的一些,都是内置构造函数:
Object
在JavaScript中最主要的数据类型有6种: 基本数据类型: 字符串、数值、布尔、undefined、null 引用类型: 对象 但是,我们会发现有些特殊情况:
其实字符串、数值、布尔、等基本类型也都有专门的构造函数,这些我们称为包装类型。 JS中几乎所有的数据都可以基于构成函数创建。
之所以基本数据类型可以使用复杂数据类型的属性和方法,是因为js底层把基本数据用类型包装成了复杂数据类型
引用类型 Object,Array,RegExp,Date等 包装类型 String,Number,Boolean 等
Object 是内置的构造函数,用于创建普通对象。
推荐使用字面量方式声明对象,而不是 Object 构造函数
Object三个常用静态方法
(静态方法就是只有构造函数Object可以调用的)
Object.keys
●作用:Object.keys
静态方法获取对象中所有属性(键) ●语法:
注意:返回的是一个数组
Object.values
●作用:Object.values
静态方法获取对象中所有属性值 ●语法:
●注意:返回的是一个数组
Object. assign
●作用:Object.assign
静态方法常用于对象拷贝 ●语法:
●作用:Object.assign静态方法常用于对象拷贝 ●使用:经常使用的场景给对象添加属性
<script>
const o = { uname: 'pink', age: 18 }
//1.获得所有的属性名
console.log(0bject.keys(o)) //返回数组['uname','age']
//2.获得所有的属性值
console.log(0bject.values(o)) // ['pink', 18]
const oo ={}
Object.assign(po, o)
console.log(oo)
</script>
总结
1.什么是静态方法? 只能给构造函数使用的方法比如Object.keys() 2.Object.keys()方法的作用是什么? 获取对象中所有属性(键) 3.Object.values()方法的作用是什么? 获取对象中所有属性值(值)
Array(重要)
Array 是内置的构造函数,用于创建数组
创建数组建议使用字面量创建,不用 Array构造函数创建
1.数组常见实例方法-核心方法
●作用:map迭代数组 ●语法:
和forEach不同,map可以处理数据,并且返回新的数组
●作用:reduce返回函数累计处理的结果,经常用于求和等 ●语法:
●例如求和运算:
累计值参数: 1.如果有起始值,则以起始值为准开始累计,累计值=起始值 2.如果没有起始值,则累计值以数组的第一个数组元素作为起始值开始累计 3.后面每次遍历就会用后面的数组元素累计到累计值里面(类似求和里面的sum
)
reduce求和函数案列
<script>
const arr = [1, 2, 3]
// arr.reduce(function(累计值,当前元素){},起始值)
// arr.reduce(function (prev, item) {
//
// console.log(11)
//
// console.Log(prev)
//
return prev + item
//},0)
// arr.reduce(function (prev, item) {
console.log(11)
//
// console.log(prev)
//
//
return prev + item
//})
const re = arr.reduce((prev,item)=> prev + item)
console.log(re)
</script>
<script>
const arr = [1, 2, 3, 4, 5]
//prev累计回调的返回值,item当前元素,0起始值,没有起始值 默认从数组第一个值开始累加
const i = arr.reduce((prev, item) => prev + item)
console.log(i);
</script>
员工涨薪案列
<script>
const arr = [{
name: '张三',
salary: 10000
}, {
name: '李四',
salary: 10000
}, {
name: '王五',
salary: 10000
}]
const count = arr.reduce((prev, item) => prev += item.salary * 0.3, 0)
console.log(count);
</script>
Array数组常见方法-其他方法
5.实例方法join数组元素拼接为字符串,返回字符串(重点)
6.实例方法 find查找元素,返回符合测试条件的第一个数组元素值,如果没有符合条件的则返回undefined(重点)
7.实例方法every检测数组所有元素是否都符合指定条件
,如果所有元素都通过检测返回true,否则返回false(重点)
8.实例方法some检测数组中的元素是否满足指定条件
如果数组中有元素满足条件返回true,否则返回false
9.实例方法concat合并两个数组,返回生成新数组
l0.实例方法sort对原数组单元值排序
11.实例方法splice删除或替换原数组单元
12.实例方法reverse反转数组
13.实例方法indrndex查找元素的素引值
数组常见方法- 伪数组转换为真数组 静态方法 Array.from(
find方法返回符合测试条件的第一个数组元素值
查找元素,返回符合测试条件的第一个数组元素值,如果没有符合条件的则返回undefined(重点)
<script>
<script>
const arr = [{
name: '小米',
price: 1999
}, {
name: '华为',
price: 3999,
}]
//找到华为这个对象,并且返回这个对象
const i = arr.find(item => item.name === '华为')
console.log(i);
</script>
</script>
every检测数组所有元素是否都符合指定条件
every方法检测数组所有元素是否都符合指定条件,如果所有元素都通过检测返回true,否则返回false(重点)
<script>
const arr = [10, 20, 30]
const flag = arr.every(item => item >= 20)
console.log(flag) //false
</script>
some方法检测数组中的元素是否满足指定条件
some方法检测数组中的元素是否满足指定条件如果数组中有元素满足条件返回true,否则返回false
<script>
const arr1 = [10, 20, 30]
const flag = arr1.some(item => item >= 20)
console.log(flag)//true
</script>
Object.value综合案列
<body>
<div></div>
<script>
const spec = {
size: '40cm*40cm',
color: '黑色'
}
// document.querySelector('div').innerHTML = Object.values(spec).join('/')
//获得对象里面的值,但是得到是数组
// Object.values(spec).join('/')
// //join(/)把对象转化为字符串并且用/隔开
// console.log(Object.values(spec).join('/'));
//把得到的字符串追加到div里面
document.querySelector('div').innerHTML = Object.values(spec).join('/')
</script>
</body>
数组常见方法- 伪数组转换为真数组
静态方法 Array.from()
<script>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<script>
// Array.from(lis)把伪数组转换为真数组
const lis = document.querySelectorAll('ul li')
// console.log(lis)
//Lis.pop()报错
const liss = Array.from(lis)
liss.pop()
console.log(liss)
</script>
String
在 JavaScript 中的字符串、数值、布尔具有对象的使用特征,如具有属性和方法
之所以具有对象特征的原因是字符串、数值、布尔类型数据是 JavaScript 底层使用 Object 构造函数“包装”来的,被
称为包装类型。
常见实例方法
1.实例属性length用来获取字符串的度长(重点)
2.实例方法split('分隔符')用来将字符串拆分成数组(重点)
3.实例方法substring(需要截取的第一个字符的索引[,结束的索引号])用于字符串截取(重点)
4.实例方法startswith(检测字符串[,检测位置素引号])检测是否以某字符开头(重点)
5.实例方法includes(搜素的字符串[,检测位置素引号])判断一个字符串是否包含在另一个字符串中,根据情况返回 true 或 false(重点)
6.实例方法 toUpperCase用于将字母转换成大写
7.实例方法 toLowercase用于将就转换成小写
8.实例方法 indexof 检测是否包含某字符
9.实例方法 endswith 检测是否以某字符结尾
10.实例方法 replace用于替换字符串,支持正则匹配
11.实例方法 match用于查找字符串,支持正则匹配
split方法
实例方法split
('分隔符')用来将字符串拆分成数组(重点)
<script>
//1.split 把字符串转换为数组 和join()相反
// const str = 'pink,red'
// const arr = str.split(',')
// console.log(arr)
// const strl = '2022-4-8'
// const arr1 = str1.split('-')
// console.log(arr1)
//2.字符串的截取
substring(开始的索引号[,结束的索引号])
//2.1如果省略结束的索引号,默认取到最后
//2.2结束的索引号不包含想要截取的部分
const str='今天又要做核酸了'
console.Log(str.substring(5, 7))
</script>
substring方法
实例方法substring
(需要截取的第一个字符的索引[,结束的索引号])用于字符串截取(重点)
<script>
//2.1如果省略结束的索引号,默认取到最后
//2.2结束的索引号不包含想要截取的部分
const str='今天又要做核酸了'
console.Log(str.substring(5, 7))//核酸
</script>
startswith方法
实例方法startswith
(检测字符串[,检测位置素引号])检测是否以某字符开头(重点)
// 3.startsWith判断是不是以某个字符开头
const str='今天天气真好'
console.log(str.startswith('天气'))
includes方法
实例方法includes
(搜素的字符串[,检测位置素引号])判断一个字符串是否包含在另一个字符串中,根据情况返回 true 或 false(重点)
//4.includes判断某个字符是不是包含在一个字符串里面
const str='我是程序猿'
console.log(str.includes('程序猿',))// true
Number
Number是内置的构造函数,用于创建数值 常用方法: toFixed()设置保留小数位的长度
单词
单词 | 说明 | 实例 |
---|---|---|
new Object | 创建对象 | |
Object.keys | 静态方法获取对象中所有属性(键) | |
Object.values | 静态方法获取对象中所有属性值 | |
Object.assign | 静态方法常用于对象拷贝 | |
Array | 内置的构造函数 | |
forEach | 遍历数组,返回数组数据和下标 | |
find方法 | 查找元素,返回符合测试条件的第一个数组元素值,如果没有符合条件的则返回undefined | |
every方法 | 检测数组所有元素是否都符合指定条件,如果所有元素都通过检测返回true,否则返回false | |
some方法 | 检测数组中的元素是否满足指定条件如果数组中有元素满足条件返回true,否则返回false | |
静态方法 Array.from() | 数组常见方法- 伪数组转换为真数组 | |
reduce 累计器 | 返回函数累计处理的结果,常用于求和等 | |
toFixed() | 设置保留小数位的长度 | |
实例方法split | ('分隔符')用来将字符串拆分成数组(重点) | |
实例方法substring | (需要截取的第一个字符的索引[,结束的索引号])用于字符串截取(重点) | const str='今天又要做核酸了' console.Log(str.substring(5, 7))//核酸 |
实例方法startswith | (检测字符串[,检测位置素引号])检测是否以某字符开头(重点) | const str='pink老师上课中' console.log(str.startswith('pink')) |
实例方法includes | (搜素的字符串[,检测位置素引号])判断一个字符串是否包含在另一个字符串中,根据情况返回 | const str='我是pink老师' console.log(str.includes('pink',))// true |