es5部分小特性
-
严格模式 (‘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)