es5 學習筆記

這是關於object的新apijquery

<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方法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>
相關文章
相關標籤/搜索