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);