这是关于object的新api
<script>
function box(name) {
this.name = name;
this.age = 26;
}
var obj = {name:'hanyu',age:26};
var obj1 = Object.create(obj)//根据此对象为原型创建一个对象
//console.log(new box().constructor);//构造函数
//console.log(JSON.stringify(obj));//
Object.defineProperty(obj1,'nickname',{
value:'rocky',
writable: false,//是否能修改
enumerable: true,//可枚举性
/*可枚举性
可枚举性(enumerable)用来控制所描述的属性,是否将被包括在for...in循环之中。具体来说,如果一个属性的enumerable为false,下面三个操作不会取到该属性。
* for..in循环
* Object.keys方法
* JSON.stringify方法
*/
configurable: false
})//与defineProperties不同的是,它只能定义一个属性
Object.defineProperties(obj1, {
'age': {
value: 24,
writable: false,//是否能修改
enumerable: true,//可枚举性
configurable: false, //当把configurable设置为false,就不能从对象中删除属性,在严格模式下会导致错误.一旦把属性定义为不可配置,就不可以通过Object.defineProperty()方法再重新修改属性特性.不然会抛出错误
/*set:function (value) {//设置对象的时候触发,不能和value和writable共存
console.log(value);
},
get:function () {//获取对象属性时候触发,其他同上
console.log('获取属性');
}*/
},
'sex': {
value: 'male',
writable: false,
enumerable: false,
configurable: false
}
});//
/*console.log(Object.getOwnPropertyDescriptor(obj1,'age'));//查看定义此属性时候的配置
console.log(Object.getOwnPropertyNames(obj1));//获取所有属性名
console.log(Object.keys(obj1));//获取所有可枚举的属性名 这里没有了sex
console.log(obj1);*/
/*console.log(Object.isExtensible(obj1));//判断对象是否可以扩展,就是不能增加新的属性,但是属性的值仍然可以更改,也可以把属性删除
Object.preventExtensions(obj1);//锁住对象
obj1['bbb'] = 1231414;//这里并没有添加成功
console.log(obj1);*/
/*Object.seal(obj1);//密封对象,既不可以扩展也不可以删除,但是还可以修改
Object.isSealed(obj1);//判断对象是否密封
obj1['aaa'] = 1;//这里的添加不起作用
delete obj1['sex'];//这里的删除也不起作用
console.log(obj1['sex']);*/
/*Object.freeze(obj1);//冻结对象,不能修改 不能删除 不能扩展
Object.isFrozen(obj1);//判断对象是否被冻结*/
/*var str = ' 13134314 ';//去掉字符串两边空格 同理于jquery trim
console.log(str.trim());*/
</script>
关于array的api方法
<script>
var arr = [1,2,3,4,5,6,7,8,9];
var arr1 = [1,1,3,4,5,6,7,9,10];
var arr2 = [1,2];
/*console.log(arr);
//console.log(arr1.sort(function (v1,v2) {return v1<v2;}));//倒叙排列数组
console.log(Array.isArray(arr));//判断是否为数组
//arr.splice(0,1,4,4,4,4,4);//第三个参数以后输入替换的数值,不输入则只删除,此函数会自动调整索引 修改原数组
console.log(arr);
console.log(arr1.indexOf(1));//查找到第一个为止*/
//console.log(arr1.sort());//默认按字符顺序 所以10到了第二位
/*//循环数组
arr1.map(function (e) {
console.log(e);
})
//根据自定义条件过滤数组
arr1.filter(function (e) {
return e>2;
});*/
/*//将数组元素合成一个值
var b = arr2.reduce(function (v1,v2) {
return v1+v2;
},100)
var b = arr2.reduceRight(function (v1,v2) {
console.log(v1);
console.log(v2);
return v1-v2;
},100)//如果有初始值,则v1为初始值,v2为数组里元素的和*/
</script>
浙公网安备 33010602011771号