{
// var Obj = (function () {
// var _id = 0;
// return function obj() {
// this.id = _id++
// }
// })()
// new Obj()//{id:0};
// new Obj()//{id:1};
// new Obj()//{id:2};
//ES5中定义常量的写法
// Object.defineProperty(window, 'person1', {
// value: '175cm',
// writable: false,//false是不能修改该属性的意思,不允许重新赋值
// });
// console.log(window.person);
//ES6中常量的写法
const Pi = '3.12';
// Pi='aaa';//1.html:29 Uncaught TypeError: Assignment to constant variable.
// console.table([1,2]);//打印出表格的东西 可以放数据的东西 最后罗列出来
const callbacks = [];
for (let i = 0; i <= 2; i++) {
callbacks[i] = function () {
return i * 2
}
}
// console.table([callbacks[0](),callbacks[1](),callbacks[2]()]);//
}
let a = [{ s: 1 }, { s: 1 }, { s: 1 }];
let newA = a.filter((v) => v.code = 0);
// console.log(a);//[{s:1,code: 0},{s:1,code: 0},{s:1,code: 0}]
// console.log(newA);//[]
let b = [1, 2, 3];
let newB = b.map((v) => v + 1);
// console.log(b);//[1, 2, 3]
// console.log(newB);//[2, 3, 4]
//函数参数求和es5
function aFn() {
// console.log(arguments);
let abc = Array.prototype.slice.call(arguments);
// console.log(abc);//[1,2]
}
aFn(1, 2);
//函数参数求和es6
{
let nnn = [1, 22];
let all = ['q', 'w', ...nnn];
// console.log(all);//['q','w',1,22]
}
{
// var Person = function () {
// var data = {
// name: 'es3',
// age: 15,
// sex: 'male'
// }
// this.get = function (key) {
// return data[key]
// }
// this.set = function (key, value) {
// if (key != 'sex') {
// return data[key] = value;
// }
// }
// }
// var person = new Person();
// person.set("name", 'c-es3');
// person.set("age",18);
// person.set("sex",'女');
// console.table([
// person.get("name"),
// person.get("age"),
// person.get("sex"),
// ])
//es5方式 属性不让修改
var Obj={
name:'es5',
age:14,
sex:"male"
}
Object.defineProperty(Obj,'sex',{
value:'male',
writable:false,
})
Obj.sex='Objsex';
// console.table(Obj);
}
//对象代理
let Agent={
name:'es6',
age:14,
sex:'male'
}
let AgentPerson=new Proxy(Agent,{
get(target,key){
return target[key]+"-aaa"
},
set(target,key,value){
if(key!=='sex'){
return target[key]=value+'-ccc';
}
}
})
AgentPerson.name='jjj-';//触发set方法、 jjj-nba
console.table(AgentPerson.name);//jjj--aaa 触发get方法 jjj+'-aaa'
console.table(Agent.name);//jjj- 触发get方法