es5 学习笔记

这是关于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>

 

你可能感兴趣的:(es5 学习笔记)