news 2026/4/26 15:45:26

JavaScript 对象与原型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JavaScript 对象与原型

目录

JavaScript 对象创建方式详解

1.1 构造函数创建对象

1.2 对象字面量创建对象

1.2.1 基本语法

1.2.2 访问对象成员

1.2.3 遍历对象属性

1.2.4 this 关键字

1.3 工厂模式创建对象

1.4 构造函数模式

1.4.1 基本用法

1.4.2 new 的执行过程

1.4.3 优化方法定义

1.5 原型模式

1.5.1 原型对象

1.5.2 原型链

1.6 垃圾回收

1.7 ES6 Class 语法

JavaScript 对象创建方式详解

1.1 构造函数创建对象

1.2 对象字面量创建对象

1.2.1 基本语法

1.2.2 访问对象成员

1.2.3 遍历对象属性

1.2.4 this 关键字

1.3 工厂模式创建对象

1.4 构造函数模式

1.4.1 基本用法

1.4.2 new 的执行过程

1.4.3 优化方法定义

1.5 原型模式

1.5.1 原型对象

1.5.2 原型链

1.6 垃圾回收

1.7 ES6 Class 语法


JavaScript 对象创建方式详解

1.1 构造函数创建对象

使用new Object()构造函数创建对象是最基础的方式:

var obj = new Object(); obj.name = "张三"; obj.gender = "男"; obj.age = 18;

特点:

  • 使用new关键字调用构造函数
  • 语法较为冗长
  • 主要用于理解对象的基本概念

1.2 对象字面量创建对象

1.2.1 基本语法

对象字面量提供更简洁的创建方式:

var obj = { name: "猪八戒", age: 28, gender: "男", sayHi: function() { console.log("hi~"); } };

注意事项:

  • 采用键值对形式定义属性
  • 多个属性间用逗号分隔
  • 方法本质上是匿名函数

1.2.2 访问对象成员

// 点语法访问 console.log(obj.name); // 方括号访问 console.log(obj["age"]); // 调用方法 obj.sayHi();

1.2.3 遍历对象属性

使用for...in循环遍历对象:

for (var prop in obj) { console.log(`属性名:`+n); console.log(`属性值:`obj[n]); }

1.2.4 this 关键字

this的指向规则:

  1. 函数调用:指向 window
  2. 方法调用:指向调用对象
  3. 构造函数调用:指向新对象
function showName() { console.log(this.name); } var obj1 = { name: "孙悟空", show: showName }; var obj2 = { name: "沙和尚", show: showName }; showName(); // 全局 obj1.show(); // 孙悟空 obj2.show(); // 沙和尚

1.3 工厂模式创建对象

解决批量创建对象问题:

function createPerson(name, age) { var obj = new Object(); obj.name = name; obj.age = age; return obj; }

缺点:

  • 对象类型无法区分
  • 构造函数均为 Object

1.4 构造函数模式

1.4.1 基本用法

function Person(name, age) { this.name = name; this.age = age; this.sayHi = function() { console.log("Hi"); }; } var p1 = new Person("张三", 20);

特点:

  • 首字母大写约定
  • 必须使用 new 调用
  • 通过 this 添加成员

1.4.2 new 的执行过程

  1. 创建新对象
  2. 绑定 this
  3. 执行构造函数
  4. 返回对象

1.4.3 优化方法定义

将方法提取到外部避免重复创建:

function sayHi() { console.log("Hi"); } function Person(name) { this.name = name; this.sayHi = sayHi; }

1.5 原型模式

1.5.1 原型对象

function Person() {} Person.prototype.name = "张三"; Person.prototype.sayHi = function() { console.log("Hi"); };

特点:

  • 所有实例共享原型成员
  • 方法只需定义一次

1.5.2 原型链

属性查找顺序:

  1. 对象自身
  2. 原型对象
  3. Object.prototype
  4. null

1.6 垃圾回收

JavaScript 自动管理内存:

var obj = new Object(); // 解除引用 obj = null;

1.7 ES6 Class 语法

class Person { constructor(name) { this.name = name; } sayHi() { console.log(`Hi, ${this.name}`); } }

特点:

  • 语法更简洁
  • 本质仍是构造函数+原型
  • 方法自动添加到原型

JavaScript 对象创建方式详解

1.1 构造函数创建对象

使用new Object()构造函数创建对象是最基础的方式:

var obj = new Object(); obj.name = "张三"; obj.gender = "男"; obj.age = 18;

特点:

  • 使用new关键字调用构造函数
  • 语法较为冗长
  • 主要用于理解对象的基本概念

1.2 对象字面量创建对象

1.2.1 基本语法

对象字面量提供更简洁的创建方式:

var obj = { name: "猪八戒", age: 28, gender: "男", sayHi: function() { console.log("hi~"); } };

注意事项:

  • 采用键值对形式定义属性
  • 多个属性间用逗号分隔
  • 方法本质上是匿名函数

1.2.2 访问对象成员

// 点语法访问 console.log(obj.name); // 方括号访问 console.log(obj["age"]); // 调用方法 obj.sayHi();

1.2.3 遍历对象属性

使用for...in循环遍历对象:

for (var prop in obj) { console.log(`属性名:${prop}`); console.log(`属性值:${obj[prop]}`); }

1.2.4 this 关键字

this的指向规则:

  1. 函数调用:指向 window
  2. 方法调用:指向调用对象
  3. 构造函数调用:指向新对象
function showName() { console.log(this.name); } var obj1 = { name: "孙悟空", show: showName }; var obj2 = { name: "沙和尚", show: showName }; showName(); // 全局 obj1.show(); // 孙悟空 obj2.show(); // 沙和尚

1.3 工厂模式创建对象

解决批量创建对象问题:

function createPerson(name, age) { var obj = new Object(); obj.name = name; obj.age = age; return obj; }

缺点:

  • 对象类型无法区分
  • 构造函数均为 Object

1.4 构造函数模式

1.4.1 基本用法

function Person(name, age) { this.name = name; this.age = age; this.sayHi = function() { console.log("Hi"); }; } var p1 = new Person("张三", 20);

特点:

  • 首字母大写约定
  • 必须使用 new 调用
  • 通过 this 添加成员

1.4.2 new 的执行过程

  1. 创建新对象
  2. 绑定 this
  3. 执行构造函数
  4. 返回对象

1.4.3 优化方法定义

将方法提取到外部避免重复创建:

function sayHi() { console.log("Hi"); } function Person(name) { this.name = name; this.sayHi = sayHi; }

1.5 原型模式

1.5.1 原型对象

function Person() {} Person.prototype.name = "张三"; Person.prototype.sayHi = function() { console.log("Hi"); };

特点:

  • 所有实例共享原型成员
  • 方法只需定义一次

1.5.2 原型链

属性查找顺序:

  1. 对象自身
  2. 原型对象
  3. Object.prototype
  4. null

1.6 垃圾回收

JavaScript 自动管理内存:

var obj = new Object(); // 解除引用 obj = null;

1.7 ES6 Class 语法

class Person { constructor(name) { this.name = name; } sayHi() { console.log(`Hi, ${this.name}`); } }

特点:

  • 语法更简洁
  • 本质仍是构造函数+原型
  • 方法自动添加到原型
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 8:52:07

导师推荐!专科生必看9款AI论文软件测评,开题报告神器TOP9

导师推荐!专科生必看9款AI论文软件测评,开题报告神器TOP9 2026年专科生论文写作工具测评:选对工具,效率翻倍 随着AI技术在学术领域的不断渗透,越来越多的专科生开始依赖AI论文软件提升写作效率。然而,面对…

作者头像 李华
网站建设 2026/4/23 18:46:37

javascript:void怎么解决

1.首先打开IE浏览器,找到菜单栏工具。 2 工具菜单中单击Internet选项。 3 在常规选项卡中单击删除按钮,删除cookies和历史文件。 4 然后单击安全选项卡,选择默认级别。 5 切换到隐私选项卡单击高级按钮。 6 勾选覆盖cookie自动处理&…

作者头像 李华
网站建设 2026/4/19 0:40:05

stm32 AES256加密 串口IAP升级 bootloader程序 通过上位机将keil生...

stm32 AES256加密 串口IAP升级 bootloader程序 通过上位机将keil生成的BIN文件进行AES加密,得到新的加密文件,加密需要自己设置秘钥,加密升级包直接烧录不能运行。 通过串口升级上位机将加密包发送到单片机, 单片机接收到数据后&a…

作者头像 李华
网站建设 2026/4/18 13:59:28

2025研究生必备10个降AIGC工具,高效避坑指南

2025研究生必备10个降AIGC工具,高效避坑指南 AI降重工具:研究生论文的隐形助手 随着人工智能技术的不断发展,越来越多的研究生在论文写作过程中开始依赖AI工具。然而,AI生成的内容往往存在明显的“AI痕迹”,不仅容易被…

作者头像 李华