JavaScript--对象学习笔记

对象

1、概念

a、为什么要有对象?

解释:如果有一组相关的数据,松散的存储不利于使用,存入数组中受下标显示又必须有固定的顺序,而对象可自定义名称存储一系列无序的相关数据

b、什么是对象?

解释:万物皆为对象,对象是一个具体的事物,一个具体的事物就会有行为和特征
例如:一辆汽车,车是一类事物,具体指那辆车才是对象,特征:红色,四个轮子;行为:驾驶加速、刹车

c、JavaScript对象

1、JavaScript中的对象:

  • JavaScript中的对象其实就是生活中的对象的一个抽象
  • JavaScript的对象是无序属性的集合,其属性值可以包含基本值、对象或函数;独享就是一组没有顺序的值,可以把JavaScript中的对象想象成键值对,其中值可以是数据和函数
  • 对象的行为和特征:
  • 特征–在对象中用属性表示
  • 行为–在对象汇总用方法表示

2、对象字面量

1、对象字面量说明

  • 创建一个对象最简单的方式是使用对象字面量赋值给变量,类似数组
  • 对象字面量语法:{}
  • 内部可存放多条数据,数据与数据之间用逗号分隔,最后一个后面不加逗号
  • 每条数据都是由属性名和属性值组成,键值对写法:k:v(k:属性名,v:属性值,可以是任意类型的数据,比如简单性数据、函数、对象)

2、区分属性和方法

  • 属性:对象的描述性特征,一般是名词,相当于定义在对象内部的变量
  • 方法:对象的行为和功能,一般是动词,定义在对象中的函数

3、调用对象内部属性和方法语法

  • 用对象的变量名大点调用某个属性名,得到属性值
  • 在对象内部用this大点调用属性名,this替代对象
  • 用对象的变量名后面加[]调用,[]内部是字符串格式的属性名
  • 调用方法时,需要在方法名后加()执行

4、更改对象内部属性和方法语法

  • 更改属性的属性值方法:先调用属性,再等号赋值(o.age = 19;)
  • 增加新的属性和属性值:使用点语法或者[]方法直接定义新属性,等号赋值(o.height-180;)
  • 删除一条属性:使用一个delete关键字,空格后面加属性调用(delete o.sex;)

3、其他创建对象的方式

1、new Object()创建对象

  • Object()构造函数,是一种特殊的函数,主要用来创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符仪器使用在创建对象的语句中
  • 构造函数用于创建一类对象,首字母要大写
  • 构造函数要和new仪器使用才有意义
    2、new在执行时会做四件事情
  • new会在内存中创建一个新的空对象
  • new会让this指向这个新的对象
  • 执行构造函数 目的:给这个心对象家属性和方法
  • new会返回这个新对象

3、工厂函数创建对象

  • 如果要创建多个类似的对象,可将new Object()过程封装到一个函数中,将来调用函数就能创建一个对象,相当于一个生产对象的函数工厂,用来简化代码
	function createPerson(name,age,job) {
		var person = new Object();
		person.name = name;
		person.age = age;
		person.job = job;
		persion.sayHi = function() {
	    	console.log('hello world');
		}
		return person;
	}
	var p1 = createPerson('战三',22,'actor');
	var p2 = createPerson('三战',22,'doctor');

4、自定义构造函数

  • 优点:比工厂方法更简单
  • 自定义一个创建具体对象的构造函数,函数内部不需要new一个构造函数的过程,直接使用this代替对象进行属性和方法的书写,也不需要return一个返回值
  • 使用时,利用new关键字调用自定义的构造函数即可
  • 注意:构造函数的函数名首字母不要大写,用来区分其他普通函数名
	function Person(name,age,job) {
		this.name = name;
		this.age = age;
		this.job = job;
		this.sayHi = function () {
			console.log('hello world');	
		}
	}
	var p1 = new Person('张三',22,'actor');

4、对象遍历

  • for in 循环也是循环的一种,专门用来遍历对象,内部会定义一个k变量,k变量在每次循环时会从第一个开始接受属性名,一直接受到最后一条属性名,执行完后跳出循环
  • 简单的遍历循环:输出每一项的属性名和属性值
	for(var k in obj) {
		console.log(k + '项的属性值是' + obk[k]);
	}

5、简单类型与复杂类型

1、简单类型与复杂类型的区别

  • 基本类型又叫值类型,复杂类型又叫引用类型
  • 值类型:简单数据类型,基本数据类型,在存储时,变量中存储的是值本身,因此叫做值类型
  • 引用类型:复杂数据类型,在存储时,变量中存储的仅仅是地址(引用),因此叫做引用数据类型

2、基本类型在内存中的存储
变量中如果存储的是简单类型的数据,那么变量中存储的是值本身,如果将变量赋值给另一个变量,是将内部的值复制一份给了另一个变量,两个变量之间灭有联系,一个变化,另一个不会同时变化

3、复杂类型在内存中的存储
如果将复杂类型的数据赋值给一个变量,复杂类型的数据会在内存中创建一个原型,而变量中存储的是指向对象的一个地址,如果将变量赋值给另一个变量,相当于将地址复制一份给新的变量,两个变量的地址相同,指向的是同一个原型,不论通过哪个地址更改原型,原型都会发生更改,两个变量下次访问时,都会发生变化

4、基本类型作为函数参数
基本类型的数据作为函数的参数,符合基本类型的数据特点

6、内置对象

1)知识回顾
  • JavaScript包含:ECMAScript、DOM、BOM
  • ECMAScript包含:变量、数据、运算符、条件分支语句、循环语句、函数、数组、对象…
  • JavaScript对象包含三种:自定义对象、内置对象、浏览器对象
  • ECMAScript对象:自定义对象、内置对象
  • 使用一个内置对象,只需要知道对象中有哪些成员,有什么功能,直接使用
  • 需要参考一些说明手册 W3C/MDN
2)MDN

1、说明:Mozilla开发者网络(MDN)提供有关开放网络技术的信息,包括HTML、CSS和万维网及HTML5应用的API

  • MDN:https://developer.mozilla.org/zh-CN/
  • 例如:通过查询MDN学习Math对象的random()方法的使用

2、学习一个方法步骤:
1)了解方法的功能
2)理解参数的意义和类型
3)明白返回值意义和类型
4)demo进行测试

3)Math 对象

  • Math对象具有数学常数和函数的属性和方法,可直接进行使用
  • 根据数学相关的运算找Math中的成员(求绝对值,取整)
    在这里插入图片描述

4)Array 对象

1、创建数组对象的两种方式:字面量方式 和 new Array() 构造函数方法
2、检测数组类型:instanceof 检测某个实例是否是某个对象类型
3、toString():把数组转换成字符串,逗号分隔每一项

4、数组常用方法
1)首尾数据操作:
在这里插入图片描述

2)合并和拆分:

3)删除、插入、替换:
在这里插入图片描述
4)位置方法
在这里插入图片描述
5)倒序
reverse():将数组完全颠倒,第一项成为最后一项,最后一项变成第一项
6)排序
在这里插入图片描述
7)转字符串方法
在这里插入图片描述
8)清空数组
a、方式一:arr = [];
b、方式二:arr.length = 0;
c、方式三:arr.splice(0,arr.length);

5)String 对象

1、基本包装类型

说明:为了方便操作简单数据类型,JavaScript提供了特殊的简单类型对象:String(基本类型没有方法)
当调用str.substring()等方法的时候,先把str包装成String类型的临时对象,再调用substring方法,最后销毁临时对象
可以使用new String()构造函数方法创建字符串对象

2、字符串特点

特点:字符串不可变,由于字符串的不可变,在大量拼接字符串时会有效率问题

3、字符串对象常用方法

说明:字符串所有方法都不会修改字符串本身(字符串不可变),操作完成会返回一个新的字符串

4、字符串属性

长度属性:str.length,字符串长度指的是一个字符串中所有的字符总数

5、字符串方法

a、charAt()方法可返回指定位置的字符

  • char:charator,字符
  • at:在哪儿
  • 参数是index字符串的下标,也从0开始
  • 表示返回指定的下标位置的字符

b、indexOf():方法可返回某个指定的字符串值在字符串中首次出现的位置

  • 找到指定的字符串在原字符串中第一次出现的位置的下标,如果子字符串在元字符串中没有,返回值是-1

c、concat()方法用于连接两个或多个字符串

  • 参数比较灵活,可字符串或者字符串变量、多个字符串
  • 生成的是一个新的字符串,原字符串不发生变化

d、split():方法用于把一个字符串分割成字符串数组

  • 参数部分是分割符,利用分割符将字符串分割成多个部分,多个部分作为数组的每一项组成数组
  • 如果分隔符是空字符串,相当于将每个字符拆分成数组中的每一项

e、toLowerCase():把字符串转黄为小写
f、toUpperCAse():把字符串转换为大写

  • 将所有疑问字符转为大写或者小写
  • 生成的是新的字符串,原字符串不发生变化

g、slice():方法可提取字符串的某个部分,并以新的字符串返回被提取的部分

  • 语法:slice(start, end)
  • 从开始位置截取到结束位置(不包括结束位置)的字符串
  • 参数区分正负,正值表示下标位置,负值表示从后面往前数第几个位置,参数可以只传递一个,表示从开始位置截取到字符串结尾

h、substr()方法可在字符串中抽取从start下标开始的指定数目的字符

  • 语法:substr(start, howmany)
  • 从开始位置截取到指定长度的字符串
  • start参数区分正负,正值表示下标位置,负值表示从后往前数第几个位置
  • howmany参数必须为正数,也可不写,不写表示从start截取到最后

i、substring():该方法用于提取字符串中介于两个指定下标之间的字符

  • 语法:substring(start, end)
  • 参数只能为正数
  • 两个参数都是指代下标,两个数字大小不限制,执行方法之前会比较一下两个参数的大小,会用小的当做开始位置,大的当做结束位置,从开始位置截取到结束位置但是不包含结束位置
  • 如果不懈第二个参数,从开始截取到字符串结尾
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值