鱼C论坛

 找回密码
 立即注册
查看: 2590|回复: 0

[学习笔记] JS 通过自定义构造函数创建对象

[复制链接]
发表于 2020-1-22 21:35:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
JS 通过自定义构造函数创建对象


虽然直接创建自定义对象很方便也很直观,但如果要创建多个相同的对象,使用这种方法就会很繁琐。

在 JavaScript 中可以自定义对象,通过调用自定义的构造函数可以创建并初始化一个新的对象。

与普通函数不同,调用构造函数必须要使用 new 运算符。在构造函数的函数体内可以通过 this 关键字初始化对象的属性。

例如,定义一个名为 Person 的构造函数:

  1. function People(name, sex, age) {
  2.     this.name = name;
  3.     this.sex = sex;
  4.     this.age = age;
  5. }
复制代码


利用 People 函数可以创建新对象:

  1. turtle = new People("小甲鱼", "男", 31);
复制代码


创建新对象后,可以使用 对象名.属性名对象名["属性名"] 的格式访问对象的属性:

  1. turtle = new People("小甲鱼", "男", 31);
  2. console.log("名字:" + turtle.name);
  3. console.log("性别:" + turtle.sex);
  4. console.log("年龄:" + turtle.age);
  5. /*
  6. 或者这样:
  7. console.log("名字:" + turtle["name"]);
  8. console.log("性别:" + turtle["sex"]);
  9. console.log("年龄:" + turtle["age"]);
  10. */
复制代码


执行结果:

  1. 名字:小甲鱼
  2. 性别:男
  3. 年龄:31
复制代码


在定义构造函数时也可以定义对象的方法。例如:

  1. function People(name, sex, age) {
  2.     this.name = name;
  3.     this.sex = sex;
  4.     this.age = age;
  5.     this.printName = function() {
  6.         console.log(this.name);
  7.     };
  8.     this.printSex = function() {
  9.         console.log(this.sex);
  10.     };
  11.     this.printAge = function() {
  12.         console.log(this.age);
  13.     };
  14. }

  15. turtle = new People("小甲鱼", "男", 31);
  16. turtle.printName();
  17. turtle.printSex();
  18. turtle.printAge();
复制代码


执行结果:

  1. 小甲鱼

  2. 31
复制代码


唉调用构造函数创建对象时需要注意一个问题。如果在构造函数中定义了多个属性与方法,那么在每次创建对象实例时都会为该对象分配相同的属性和方法,这样会增加对内存的需求。这时可以通过 prototype 属性解决这个问题。

prototype 属性是 JavaScript 中所有函数都具有的一个属性,该属性可以向对象中添加属性与方法。

例如:

  1. function People(name, sex, age) {
  2.     this.name = name;
  3.     this.sex = sex;
  4.     this.age = age;
  5. }
  6. People.prototype.show = function() {
  7.     console.log(
  8.         "姓名:" + this.name + "\n性别:" + this.sex + "\n年龄:" + this.age
  9.     );
  10. };

  11. var turtle = new People("小甲鱼", "男", 31);
  12. turtle.show();
复制代码


执行结果:

  1. 姓名:小甲鱼
  2. 性别:男
  3. 年龄:31
复制代码

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-5 11:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表