function clac(age){
var _age;
Object.defineProperties(this,{
age:{
get(){
console.log('调用get');
return _age;
},
set(val){
console.log('调用set',val);
if(val<18||val>60)throw new RangeError('年龄不符合');
else _age=val;
},enumerable:true
}
})
this.age=age;
}
var zd=new clac(29);
console.log('clac',zd.age);
zd._age=16;
console.log('防止屌丝更改',zd.age);
// zd.age=16;
console.log(zd.age);
console.log('*节约内存************************************');
function clacJ(age){
Object.defineProperties(this,{
_age:{writable:true},
age:{
get:this.getAge,
set:this.setAge,
enumerable:true
}
});
this.age=age;
}
clacJ.prototype={
getAge(){
return this._age
},
setAge(val){
console.log('set',val);
if(val<18||val>60)throw new RangeError('年龄不符合');
else this._age=val;
}
}
// var zdJ=new clacJ(15);
var zdJ=new clacJ(25);
console.log(zdJ.age);
// zdJ._age=16;
// console.log('防止屌丝更改',zdJ.age);
// zd.age=16;
// console.log(zd.age);
console.log('*ES6***************************************');
class clacES6{
constructor(age){
this.age=age;
Object.defineProperties(this,{
_age:{writable:true},
});
Object.seal();
}
get age(){
console.log('调用age的get');
return this._age;
}
set age(val){
console.log('调用age的set',val);
if(val<18||val>60)throw new RangeError('年龄不符合');
else this._age=val;
}
}
//var zdES6=new clacES6(15);
var zdES6=new clacES6(25);
console.log(zdES6.age);
// zdES6._age=16;
// console.log('防止屌丝更改',zdES6.age);
// zd.age=16;
// console.log(zd.age);
class FullName{
constructor(firstName,lastName){
this.firstName=firstName;
this.lastName=lastName;
};
intr(){
console.log('曹尼玛')
}
get fullName(){
return (this.firstName+' '+this.lastName);
};
set fullName(val){
[this.firstName,this.lastName]=val.split(' ');
}
stati cfind(){
return {name:'我草你妈'};
}
}
var zy=new FullName('张','悦');
console.log(zy,zy.firstName,zy.lastName,zy.fullName);
zy.fullName='焉 文然';
console.log(zy,zy.firstName,zy.lastName,zy.fullName);
console.log(FullName.find());