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>
时间: 2024-11-05 16:09:59

es5 学习笔记的相关文章

【ECMAScript】es5学习笔记1——函数表达式

一.es5中函数定义的两种形式: 1.函数声明 function a() { //here is you code } 2.函数表达式 var a = function() { //here is your code } 首先要明确的一点是,在es5中,函数是一种对象(object),或者说,函数是Object类的子类 a instanceof Function //true a instanceof Object //true 函数声明有一个非常重要的特征,函数声明提升,意思是,在执行代码之前

Angular 2 学习笔记(一)

Angular 2 学习笔记(一) First Application 建立自定义组件(Components) 从表单(Form)接受用户输入(input) 渲染对象列表并用视图战事 监听(Intercepting)用户点击事件并执行操作 Getting started TypeScript 建议使用 TypeScript 开始 Angular 2 的编程. Angular 2 有 ES5 API ,但是 Angular 2 是用 TypeScript 写的并且大部分人都在使用 TypeScri

JavaScript正则表达式学习笔记之一 - 理论基础

自从年前得空写了两篇文章之后就开始忙了,这一忙就是2个月??.当时信誓旦旦说的定期写篇博客的计划也就泡汤了??,不过好在最近有空,顺便总结一下这两个月遇到的几个问题.第一个问题就是项目中用到了一些正则才发现之前被自己忽略的正则是时候补一补了.恰逢今天周六??,就把自己学习JavaScript正则表达式的笔记整理成文,写了这篇关于正则表达式理论基础的文章,希望本文能对有需要的同学提供帮助.号外:本文相对基础,大神请忽略??. 一. 基本概念 正则表达式是用于匹配字符串中字符组合的模式. 一种几乎可

es6学习笔记初步总结

es6学习笔记初步总结 1. let.const 和 block 作用域 在ES6以前,var关键字声明变量.无论声明在何处,都会被视为声明在函数的最顶部(不在函数内即在全局作用域的最顶部).这就是函数变量提升例如: let 关键词声明的变量不具备变量提升(hoisting)特性 let 和 const 声明只在最靠近的一个块中(花括号内)有效 当使用常量 const 声明时,请使用大写变量,如:CAPITAL_CASING const 在声明时必须被赋值 否则报语法错误SyntaxError

vector 学习笔记

vector 使用练习: /**************************************** * File Name: vector.cpp * Author: sky0917 * Created Time: 2014年04月27日 11:07:33 ****************************************/ #include <iostream> #include <vector> using namespace std; int main

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu

jQuery学习笔记(一):入门

jQuery学习笔记(一):入门 一.JQuery是什么 JQuery是什么?始终是萦绕在我心中的一个问题: 借鉴网上同学们的总结,可以从以下几个方面观察. 不使用JQuery时获取DOM文本的操作如下: 1 document.getElementById('info').value = 'Hello World!'; 使用JQuery时获取DOM文本操作如下: 1 $('#info').val('Hello World!'); 嗯,可以看出,使用JQuery的优势之一是可以使代码更加简练,使开

[原创]java WEB学习笔记93:Hibernate学习之路---Hibernate 缓存介绍,缓存级别,使用二级缓存的情况,二级缓存的架构集合缓存,二级缓存的并发策略,实现步骤,集合缓存,查询缓存,时间戳缓存

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Activiti 学习笔记记录(三)

上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件