zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    C/C++学习的50个经典网站
    C++ 调用C++写的函数库的2种方法之一(显式调用)
    C++ 调用C++写的类库的2种方法之一(隐式链接)
    几个第三方yum源
    网站运维管理工具
    网站架构文章收集
    linux setup 相关text mode图形配置工具的安装
    nfs 安装配置
    centos6.4 minimal 安装kvm
    keepalived
  • 原文地址:https://www.cnblogs.com/tudou1223/p/5145941.html
Copyright © 2011-2022 走看看