JavaScript 的对象

JavaScript 的对象

对象的定义

指一种复合的数据类型,对象可以保存多种不同的数据类型的属性
除了5种基本数据类型(Number、String、Boolean、unll、undefined)外,其他的都属于对象。
对象属于引用数据类型。

对象的3个分类

  1. 内置对象:由ES标准定义的对象,可以在实现中直接使用。如:Math、String、Function、Object等对象。
  2. 宿主对象:由 JS 运行环境提供的对象,主要是浏览器提供的对象。如:BOM(浏览器对象模型)、DOM(文档对象模型)。
  3. 自定义对象:由开发者创建的对象。

创建对象的4个方式

  1. 使用Object的构造函数创建
    构造函数必须使用 new 函数名()的语法格式。
var obj = new Object();		//当没有参数时,括号可以省略

这是使用了 Object 默认的构造函数,创建完成对象后,还要为对象添加属性,比较麻烦,而且创建出来的对象都是 Object 类型。
可以通过自定义构造函数的方法,创建不同的类。对象是类的实例,类是对象的抽象。

function Person(name,age){
	this.name = name;
	this.age = age;
	this.sayName = function(){
		console.log(this.name);
	}
}
var per = new Person("zhangSan",18);
per.sayName();
console.log(per);

直接通过构造函数,即可批量创建对象了。

  1. 使用直接量创建对象
    语法:var 对象名 = {属性名:属性值,属性名:属性值,...}
var obj = {
	name:"lin",
	age:18
}
  1. 使用 Object.create() 函数创建对象
var obj = Object.create({
	name:"lin",
	age:18
})
  1. 自定义工厂模式创建对象
    工厂模式可以批量创建对象,但是创建的所有的对象都是同一个类型,不好区分对象。
function createObject(name,age){	//自定义一个函数
	var obj = new Object();         //声明一个对象
	obj.name = name;                //利用形参初始化
	obj.age = age;
	obj.sayName = function(){
		console.log(obj.name);
	}
	return obj;                      //返回这个对象
}
var obj1 = createObject("lin",18);	//接收对象
var obj2 = createObject("zhangSan",23);
obj1.sayName();				//执行对象的方法
obj2.sayName();

添加或修改对象的属性

语法1:对象名.属性名=属性值
语法2:对象名[属性名]=属性值 (推荐使用这种方式)

  • 属性名默认是字符串类型,不要求遵守标识符的规范(推荐按照规范命名)。如果要使用不遵守标识符的规范的属性名时,第1种语法会报错,只可以使用第2种语法。
  • 属性值可以是任意的数据类型,包括对象类型。
obj.name="lin";
obj[123]=18;

当对象中还没存在这个属性时,该语法是添加这个属性。如果已经存在这个属性了,是修改属性值,因为后面的值会把前面的值覆盖了。

获取对象属性

语法1:对象名.属性名
语法2:对象名[属性名]
注意:语法2属性名一定加上引号,因为属性名是字符串类型。

console.log(obj.name);

如果对象不存在这个属性,浏览器不会报错,会获取一个 undefined 的属性值。

删除对象

语法1:delete 对象名.属性名
语法2:delete 对象名[属性名]

delete obj.name;
delete obj[123];

当删除这个属性后,再获取属性值,只能获取一个 undefined 的属性值。
delete 只可以删除对象的属性,不可以删除对象。

拓展:构造函数的执行流程

  1. 创建一个新的对象
  2. 将新建的对象设置为函数中的 this,可以使用 this 来引用函数。
  3. 执行函数中的代码
  4. 将新对象作为返回值返回

拓展:类 与 对象

使用同一个构造函数创建的对象,称为一类对象,也将一个构造函数称为一个类。
通过构造函数创建的对象,成为该类的实例。
对象是类的实例,类是对象的抽象。

拓展:in 运算符

定义:该运算符可以检测一个对象中是否含有指定的属性。
语法:“属性名” in 对象名

var obj = {
	name:"lin",
	age:18
}
console.log("age" in obj);  	// true

拓展:instanceof 运算符

定义:判断一个对象是否是某个类的实例。
语法:对象 instanceof 构造函数

var per = new Person("zhangSan",18);
console.log(per instanceof Person);

所有对象 都是 Object 的实例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值