JavaScript对象

本文详细介绍了JavaScript中的对象,包括对象的概念、字面量创建、属性与方法的使用,以及通过new Object()和自定义构造函数创建对象的方式。此外,还探讨了如何遍历对象的属性。内容深入浅出,适合JavaScript初学者掌握对象操作。
摘要由CSDN通过智能技术生成

对象

现实生活中的对象:万物皆对象,对象是一个具体的事物,一个具体的事物就会有行为和特征。

JavaScript 中的对象: JavaScript 中的对象其实就是生活中对象的一个抽象。 JavaScript 的对象是无序属性的集合

其属性可以包含基本值、对象或函数。对象就是一组没有顺序的值。我们可以把 JavaScript 中的对象想象成键值对,其中值可以是数据和函数。

对象的行为和特征: 特征—在对象中用属性表示;行为—在对象中用方法表示

对象字面量***

创建一个对象最简单的方式是使用对象字面量赋值给变量。类似数组。

对象字面量语法:{}

  • 内部可以存放多条数据,数据与数据之间用逗号分隔,最后一个后面不要加逗号。
  • 每条数据都是有属性名和属性值组成,键值对写法:k: v
  • k: 属性名
  • v:属性值,可以是任意类型的数据,比如简单类型数据、函数、对象
var obj = {
	k: v,
	k: v,
	k: v
};
// 创建单个对象而不是一类对象时使用这种方法
// 通过对象字面量方式创建一个对象
var person1 = {
	name: 'zs',
	age: 18,
	sex: 'male',
	sayHi: function () {  // 匿名函数
		console.log(this.name + "向你说您好");
	}
};
// 调用对象内部属性和方法
console.log(person1.name);
console.log(person1["name"]);
person1.sayHi();
person1["sayHi"]();
// 更改数据
person1.age = 22;
// 添加数据
person1.height = 180;
// 删除数据
delete person1.sex;

注意:小括号是运算符,中括号是数组的字面量,大括号是对象的字面量。

属性与方法

属性:对象的描述性特征,一般是名词,相当于定义在对象内部的变量。

方法:对象的行为和功能,一般是动词,定义在对象中的函数。

1.调用对象内部属性和方法的语法

  • 用对象的变量名打点调用某个属性名,得到属性值。 console.log(o.name);
  • 在对象内部用 this 打点调用属性名。this 替代对象。
  • 用对象的变量名后面加 [] 调用,[] 内部是字符串格式的属性名。console.log(o['age']); o['sayHi']();
  • 调用方法时,需要在方法名后加 () 执行。o.sayHi();

2. 更改对象内部属性和方法的语法

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

变量、属性、函数、方法的总结

  1. 变量:单独声明赋值,单独存在

  2. 属性:对象里面的变量称为属性,不需要声明,用来描述该对象的特征

  3. 函数:单独存在的,通过“函数名()”的方式就可以调用了

  4. 方法:对象里面的函数称为方法,方法不需要声明,使用“对象.方法名()”的方式就可以调用了,方法用来描述该对象的行为和功能

其他创建对象的方法

1. new Object() 创建对象

Object() 构造函数 ,是一种特殊的函数。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与 new 运算符一起使用在创建对象的语句中。

  • 构造函数用于创建一类对象,首字母要大写。
  • 构造函数要和 new 一起使用才有意义
var person1 = new Object(); // 创建一个新的空对象
person1.name = "zs";
person1.age = 22;
person1.sex = true;
person1.sayHi = function () {
  console.log(this.name + "您好");
};
console.log(person1.name);
console.log(person1["age"]);
person1.sayHi();

* new 在执行时会做四件事情

  • new 会在内存中创建一个新的空对象
  • new 会让 this 指向这个新的对象
  • 执行构造函数 目的:给这个新对象加属性和方法
  • new 会返回这个新对象

2. 工厂函数创建对象

如果要创建多个类似的对象,可以将 new Object() 过程封装到一个函数中,将来调用函数就能创建一个对象,用来简化代码

把对象里一些相同的属性和方法抽取出来封装到函数里面

// 工厂方法就是相当于对new Object() 方法的一个封装
function createPerson(name, age, sex) {
  // 创建一个空的对象
  var person = new Object();
  // 添加属性名和方法 属性可以接收参数的值
  person.name = name;
  person.age = age;
  person.sex = sex;
  person.sayHi = function () {
    console.log(this.name + "您好");
  };
  // 将对象作为函数的返回值
  return person;
}
// 想创建一个对象 可以调用工厂函数
var p1 = createPerson("zs", 19, true);
var p2 = createPerson("ls", 20, false);
console.log(p1);
console.log(p2);
console.log(p2.sayHi());

3. 自定义构造函数***

比工厂方法更加简单。

  • 自定义一个创建具体对象的构造函数,函数内部不需要 new 一个构造函数的过程,直接使 用 this 代替对象进行属性和方法的书写,也不需要 return 一个返回值。

  • 使用时,利用 new 关键字调用自定义的构造函数即可。

  • 注意:构造函数的函数名首字母需要大写,区别于其他普通函数名

// 自定义一个构造函数
// 构造函数首字母要大写
function Person(name, age, sex) {
  // 不需要使用 new一个新对象
  // 用this 替代将来创建的新对象
  this.name = name;
  this.age = age;
  this.sex = sex;
  this.sayHi = function () {
    console.log("hello");
  };
  this.likeColor = function (color) {
    console.log(color);
  };
  // 不需要添加return
}
// 在这里用 new 关键字调用构造函数创建一个新的对象
var p1 = new Person("zs", 22, true);
p1.sayHi();
console.log(p1.name);
console.log(p1);
p1.likeColor("blue");

对象遍历

for in 循环也是循环的一种,专门用来遍历对象,内部会定义一个 k 变量, k 变量在每次循环时会从第一个开始接收属性名,一直接收到最后一条属性名,执行完后跳出循环。

简单的循环遍历:输出每一项的属性名和属性值。

// 循环遍历输出每一项
for (var k in person1) {
  // k 存储的是每一条数据的属性名或方法名
  // 如果是person1.k,会当作是person1里面有个 k
  // person1[k] 把 k 当作一个变量传入中括号中,这样会接收到变量名的一个字符串
  console.log(k + "属性的属性值为" + person1[k]);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值