📌 引言
在编程的世界中,我们常常需要将现实世界中的事物抽象为代码中的结构。JavaScript 是一门支持面向对象编程的语言,它允许我们通过对象来表示和操作现实世界中的实体。这次我们用一段凄惨的爱情故事来描述,从变量的使用到面向对象的设计思想,逐步介绍如何用 JavaScript 来描述一个人的基本信息。
🔧 变量:基本数据类型的运用
在 JavaScript 中,我们可以使用变量来存储简单的数据类型。例如:
const xx = {
name: 'xx',
age: 18,
tall: 180,
hometown: '赣州兴国',
isSingle: true
};
这些变量可以独立使用,也可以组合起来用于输出信息:
虽然这种方式简单直观,但随着需求的复杂化(比如需要添加更多属性或行为),我们需要引入更高级的结构 —— 对象。
🎯 面向对象思想:现实世界的软件抽象
面向对象编程(Object-Oriented Programming, OOP)是一种将现实世界中的事物抽象为程序中对象的思想。每个对象都包含:
- 属性(Properties) :描述对象的状态(如名字、年龄)
- 方法(Methods) :描述对象的行为(如自我介绍)
🏗️ 对象的定义
在 JavaScript 中,我们可以通过对象字面量的方式创建一个代表“小张”的对象:
const zsf = {
name: '张sf',
age: 20,
height:180
gender: '男',
hobby: '吃饭睡觉打飞机',
isSingle:true,
hometown:'赣州兴国'
introduce: function(boy) {
console.log('大家好,我叫'+boy.name+',今年'+boy.age+'岁,爱好是'+boy.hobby+'。');
}
sendFlower: function (girl) {
console.log(zsf.name + '给' + girl.name + '送了99朵玫瑰')
girl.receiveFlower(zsf)
}
};
🧠 属性说明
| 属性名 | 类型 | 描述 |
|---|---|---|
name | String | 姓名 |
age | Number | 年龄 |
gender | String | 性别 |
hobby | String | 兴趣爱好 |
introduce | Function | 自我介绍的方法 |
当然,除了男主角,还有几位女主角
const goddess = {
happinesslevel:36,//开心指数
name: '黄q',
age:18,
gender:女,
isSingle:true,
hometown:'赣州兴国',
//可以加一些新的元素
rnum:408,
```
reciveFlower: function (sender) {
console.log(this.name + '收到了' + sender.name + '的99朵玫瑰');
if (this.happinesslevel > 98) {
console.log('我们在一起吧!');
} else {
console.log('fuck away');
}
}
}
const gm = {
name: 'lyj',
age:18,
gender:女,
isSingle:true,
hometown:成都,
rnum:408,
```
reciveFlower: function (sender) {
console.log('收到了' + sender.name + '的99朵玫瑰');
xm.reciveFlower(sender);
}
故事开始了:
🌸 第一幕:小张的告白行动
小张暗恋着女神已久。他决定鼓起勇气,送玫瑰来表达自己的心意。
zsf.sendFlower(goddess); // 小张向女孩发送爱意
输出结果:
虽然zsf用心良苦,但女神的幸福指数只有 36,显然还没被感动。她冷冷地回应了一句:“fuck away”。
🧊第二幕:女神的冷漠与隐藏的心动
尽管表面上拒绝了zsf,但女神其实是个内心细腻的人。她并不是不喜欢,而是习惯了用高傲来保护自己,心里早已深深地爱上了小张。
小张也没有放弃,依旧用其他的方式苦苦追求着女神。
而这个方式便是,找到女神的闺蜜当僚机。
👀 第三幕:闺蜜登场 —— 新的变量加入剧情
小张又买了花,并把花送给了闺蜜,让其转交,并附带一系列情话。
zsf.sendFlower(gm); // 小张向女孩发送爱意
输出结果:
最后小张在闺蜜的帮助下,还是成功的和女神走到了一起!
🧩 基本规则总结:面向对象的核心思想
| 概念 | 说明 |
|---|---|
| 对象 | 现实世界中实体的抽象,具有状态(属性)和行为(方法) |
| 属性 | 描述对象的特征,如姓名、年龄等 |
| 方法 | 表示对象的行为,如说话、移动等动作 |
| 封装 | 将数据和操作隐藏在对象内部,对外提供接口 |
| 抽象化 | 抽取关键特征,忽略不必要细节 |
关于代码中的接口的应用:
接口
sendFlower方法:这个方法定义在zsf对象中,它接受一个参数girl,并期望这个参数是一个包含receiveFlower方法的对象。这就形成了一种隐式的接口要求,即任何想要接收小张送花的对象都必须实现receiveFlower方法。receiveFlower方法:这个方法被定义在goddess和gm对象中。它们实现了如何处理收到的花朵。虽然这不是传统意义上的接口实现,但这种方式确实定义了一组行为规范(即接收花朵的行为)。- 这里,
pyc.sendFlower(gm)实际上调用了gm对象上的receiveFlower方法,而gm的receiveFlower方法又调用了xm的receiveFlower方法,形成了一个间接的交互链。这实际上就是一种基于对象和方法调用的简单“接口”设计
🧱 扩展:使用构造函数创建多个对象
通过扩展学习得知,如果我们想创建多个类似的人,可以使用构造函数来统一结构:
function Person(name, age, gender, hobby) {
this.name = name;
this.age = age;
this.gender = gender;
this.hobby = hobby;
this.introduce = function() {
return `大家好,我叫${this.name},今年${this.age}岁,性别${this.gender},喜欢${this.hobby}。`;
};
}
let yzx = new Person('游志兴', 21, '男', '编程与阅读');
console.log(yzx.introduce());
📚 结语
通过变量我们能初步了解如何存储信息,而通过面向对象的思想,我们能更好地组织和管理这些信息,使代码更具可读性和扩展性。以“小张”为例,我们不仅学会了如何用 JavaScript 表达一个人的基本信息,也掌握了如何用对象模型来模拟现实世界中的实体。
掌握面向对象,就是掌握构建复杂系统的第一步!
📌 关键词:JavaScript、面向对象、变量、对象、属性、方法、封装、抽象
🔖 适合人群:初学者、前端入门者、对前端感兴趣的开发者
🎯 学习目标:理解面向对象的基本概念,并能用 JavaScript 实现简单对象建模