小黑的Vue前端之路:js中通过构造函数封装,设置对象getter和setter方法

js中构造函数创建对象

JavaScript本身并不是设计成面向对象的,所以没有class之类的关键字用来定义类,但JavaScript本身相当灵活,可以利用function关键字来定义类并创建对象。

例如js创建person对象

通过new关键字,把函数当成了创建对象的构造函数

function Person(name) {
	this.name = name;
}
		 
var person = new Person('小黑黑');
console.log(person.name);

等价python写法

class Person(object):
	def __init__(self, name):
		self.name = name
person = Person('小黑黑')
print(person.name)

通过构造函数封装对象属性的getter和setter方法

1.通过Object.keys获取对象的属性。
2.通过for循环对每个属性设置getter和setter方法。

		// 定义对象
		let data = {
			name: '小黑无敌酒量',
			age: 25,
			attr: '酒量无敌'
		}
		// 通过js构造函数,封装data对象,增加属性getter和setter方法
		function Obsever(obj){
			// 获取obj的所有属性的key
			const keys = Object.keys(obj);
			// 对于每个属性,都添加getter和setter方法
			keys.forEach((k)=>{
				Object.defineProperty(this, k, {
					get(){
						return obj[k];
					},
					set(val){
						console.log(`小黑黑修改了${k}的值哦,从${obj[k]}变成了${val}`);
						obj[k] = val;
					}
				})
			})
		}
		// 封装data函数
		data = new Obsever(data);

在这里插入图片描述
在这里插入图片描述

相关推荐

  1. gettersetter方法优缺点

    2024-03-27 16:18:01       12 阅读
  2. Kotlin getter setter

    2024-03-27 16:18:01       10 阅读
  3. Go语言如何正确使用gettersetter

    2024-03-27 16:18:01       18 阅读
  4. Vue3:Piniagetters

    2024-03-27 16:18:01       12 阅读
  5. 前端学习(Vue2 一)

    2024-03-27 16:18:01       12 阅读
  6. 前端学习(Vue2 二)

    2024-03-27 16:18:01       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-27 16:18:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-27 16:18:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-27 16:18:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-27 16:18:01       20 阅读

热门阅读

  1. LeetCode-热题100:207. 课程表

    2024-03-27 16:18:01       21 阅读
  2. 基于Qt的插件扩展

    2024-03-27 16:18:01       20 阅读
  3. 了解 C++ 中的三元运算符

    2024-03-27 16:18:01       18 阅读
  4. chrome安装vue插件vue-devtools

    2024-03-27 16:18:01       25 阅读
  5. 计算两点距离工具类

    2024-03-27 16:18:01       19 阅读
  6. ardupilot开发 --- 机载(边缘)计算机-VISP-附录 篇

    2024-03-27 16:18:01       19 阅读