JavaScript学习-面向对象

面向对象简介

对象的作用是:封装信息。
对象具有特征(属性)和行为(方法)。
面向对象:可以创建自定义的类型,很好的支持继承和多态。
面向对象的特征:封装、继承、多态。

基本数据类型和引用数据类型

基本数据类型就是:String 字符串、Number 数值、Boolean 布尔值、Null 空值、Undefined 未定义。
引用类型就是:Object 对象。

基本数据类型:基本数据类型的值直接保存在栈内存中,值与值之间是独立存在,修改一个变量不会影响其他的变量。

引用类型

  • 对象属于一种复合的数据类型,可以保存多个不同数据类型的属性。

  • 对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间。变量保存的是对象的内存地址(对象的引用)。

  • 对象的值是保存在堆内存中的,而对象的引用(即变量)是保存在栈内存中的。

  • 如果两个变量保存的是同一个对象引用,当一个通过一个变量修改属性时,另一个也会受到影响。

对象的分类

1.内置对象:

由ES标准中定义的对象,在任何的ES的实现中都可以使用
比如:Math、String(new String()创建一个对象)、Number、Boolean、Function、Object等
2.宿主对象:

由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象。
比如 BOM DOM。比如console、document。
3.自定义对象:

由开发人员自己创建的对象

创建对象:使用new关键字调用的函数

var obj = new Object();

创建后向对象中添加属性,在对象中保存的值称为属性。
向对象添加属性的语法:

对象.属性名 = 属性值

举例来说:

var student = new Object();
			
			student.name="lulu";
			student.sex="女";
			student.like="音乐";
			console.log(student);

运行结果:
在这里插入图片描述
加入行为:

            var student = new Object();
			student.name="lulu";
			student.sex="女";
			student.like="音乐";
			student.draw=function(){
				console.log(this.name+"会画画");
			}
			console.log(student);
			}

调用方法:
在这里插入图片描述

字面量方式创建对象

 var teacher={
		   name:"王老师",
		   age:30,
		   sing:function () {
		   	 console.log(this.name+"会唱歌")
		   }
	   }

控制台操作结果:
在这里插入图片描述
【注】对象的属性也可以是另一个对象
举例:

  //创建对象 obj1
    var obj1 = new Object();
    obj1.test = undefined;//创建对象 obj2
    var obj2 = new Object();
    obj2.name = "smyhvae";//将整个 obj2 对象,设置为 obj1 的属性
    obj1.test = obj2;
​
    console.log(obj1.test.name);

运行结果smyhvae

获取和设置对象中的属性

获取:

对象.属性名--->obj.name
或者
对象[属性名]------>obj["name"]

设置

obj.name = "xxx";
或
obj["name"]

当需要用变量来确定属性时需要使用,obj[“name”]这种格式。
例如:

 var teacher={
		   name:"王老师",
		   age:30,
		   sing:function () {
		   	 console.log(this.name+"会唱歌")
		 }
	}
var property="name"
console.log(teacher[property])

删除对象的属性

    delete obj.name;
    delete obj["name"]

检查属性是否存在

  • 通过in运算符可以检查一个对象中是否含有指定的属性。如果有则返回true,没有则返回false。
  • 对象.hasOwnProperty(“属性名”) 方法也可以检查
    例子:
//检查obj中是否含有name属性
    console.log("name" in obj);
    console.log(obj.hasOwnProperty('name'))

遍历对象中的属性:for in

var someone={
	id:"123213",
	name:"lulu",
	sex:"女"
 }
 for (var n in someone) {
	console.log("属性名:" + n);
	console.log("属性值:" + someone[n]); 
 }

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值