构造函数中通过this为实例初始化属性,属性直接挂载到新对象上;this指向new创建的空对象,可赋基本类型、对象、数组、函数等;需避免覆盖原型方法,推荐方法定义在原型上;支持默认值与校验以增强健壮性。

在 JavaScript 中,构造函数内部通过 this 给实例初始化属性,本质是把属性直接挂载到即将被创建的新对象上。只要在构造函数里用 this.属性名 = 值,该属性就会成为新实例的自有属性。
构造函数中 this 指向新创建的实例
当使用 new 调用构造函数时,JavaScript 引擎会自动创建一个空对象,并将这个对象赋给函数内部的 this。此时对 this 的任何属性赋值,都会写入这个新对象。
function Person(name, age) { this.name = name; this.age = age; }-
const p = new Person('Alice', 25);→p.name和p.age就是实例属性
可初始化多种类型的数据
this 不仅能赋基本类型,也能赋对象、数组、函数等。所有赋值都属于实例本身,不共享。
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
-
this.hobbies = ['reading', 'coding'];(数组) -
this.info = { city: 'Beijing' };(对象) -
this.sayHello = function() { return `Hi, I'm ${this.name}`; };(方法)
注意避免意外覆盖原型方法
如果在构造函数里给 this 赋值一个同名方法(比如 this.toString = ...),它会遮蔽原型链上的同名方法,且每个实例都重复创建一份,浪费内存。
- 推荐把方法定义在原型上:
Person.prototype.sayHello = function() {...}; - 只在构造函数中初始化与实例强相关的状态数据
支持默认值和简单校验
可在赋值前做基础处理,比如提供默认值或过滤无效输入,让初始化更健壮。
this.name = name || 'anonymous';this.age = typeof age === 'number' && age > 0 ? age : 0;-
this.id = Date.now() + Math.random().toString(36).slice(2, 8);(生成唯一标识)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










