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的所有属性的keyconst 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);