严格模式 (‘use strict’) 1.1. 1 必须使用var 声明对象 // 1.必须使用var声明对象 var username = “kobe” 1.2. 2 禁止自定义的函数的this指向window // 2. 禁止自定义的函数中的this指向window function person(name, age){ this.name = name; this.age = age; } new person(‘kobe’, 15) 1.3. 3 创建eval 的作用域 // 3. 创建eval的作用域
var str = 'kebo1' eval('var str = "kobe2";alert(str)') alert(str)JSON对象扩展 2.1. JSON.stringify(obj/arr) js对象(数组)转换为json对象(数组) 2.2. JSON.parse(json) json对象(数组)转换成js对象(数组)
es5_object对象方法扩展 3.1. 1 Object.create(prototype, [descriptors]) 作用: 以指定对象为原型,创建新的对象
第一个参数传指定的原型,第二个为添加参数的描述 value: 指定值 writable:标识当前属性值是否可修改,默认为flase configurable:标识当前属性是否可以被删除 enumerable: 标识当前属性是否能用for in 枚举
例子: //以指定对象为原型,创建新的对象 var obj = {user:‘kobe’, age:30}; var obj1 = Object.create(obj, { sex: { value: ‘男’,
//是否可修改 writable: true, //是否可删除 configurable: true, // 是否可枚举 enumerable: true } }) console.log(obj1) console.log(obj1.age) console.log(obj1.user) console.log(obj1.sex) obj1.sex = '女' console.log(obj1.sex) delete obj1.sex console.log(obj1.sex) for (var i in obj1){ console.log(i) }3.2. 2.Object.defineProperties(object, descriptors) 作用:为指定的对象扩展多个属性
get: 用来获取当前属性值的回调函数 set: 修改当前属性值的触发的回调函数,并且实参为修改后的值 存取器属性setter,getter 一个为存,一个为取
Object.defineProperties(obj, { fullname: { get: function(){ console.log(‘get()’) return this.lastname + ’ ’ + this.firstname }, set: function(data){ console.log(‘set()’) console.log(data) var names = data.split(’ ') this.firstname = names[1] this.lastname = names[0] }, }, age: { get: function(){ console.log(‘get()’) return 17 }, } })
console.log(obj) console.log(obj.fullname) obj.fullname = '斯蒂芬 库里' console.log(obj.fullname) console.log(obj.age)3.3. Object.defineProperties的实现实则为 get与set,对象内部同样可以实现 var obj = { lastname :‘科比’, firstname : ‘布莱恩特’, get fullname(){ return this.lastname + ’ ’ + this.firstname }, set fullname(datas){ var names = datas.split(’ '); this.firstname = names[0] this.lastname = names[1] } }
console.log(obj.fullname) obj.fullname = '斯蒂芬 库里' console.log(obj.fullname) es5_数组方法的扩展 4.1. 1. Array.prototype.indexOf(value) 得到值在数组的第一个下标(没有的话返回-1) // 输出第一个7的下标 console.log(arr.indexOf(77)) 4.2. 2. Array.prototype.LastIndexOf(value) 得到值在数组的最后一个下标 // 输出第二个7的下标 console.log(arr.lastIndexOf(7)) 4.3. 3. Array.prototype.forEach(function(item, index){逻辑}) 遍历数组 // 遍历数组 console.log(arr.forEach(function(item, index){ console.log(item, index) })) 4.4. 4. Array.prototype.map(function(item, index){逻辑}) 对数组进行加工,返回新的数组 // 遍历数组,返回加工后的数组 var arr1 = arr.map(function(item, index){ return item + 7 }) console.log(arr1) 4.5. 5. Array.prototype.filter(function(item, index){逻辑}) 按条件返回数组 //返回符合条件的数组 var arr2 = arr.filter(function(item, index){ return item>6 && index >4 }) console.log(arr2)