• 对象(概念+增删查改)


     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="utf-8">
     5         <title></title>
     6     <script type="text/javascript">
     7     /*
     8     对象的分类:
     9     1.内建对象
    10       由ES标准中定义的对象,在任何的ES的实现中都可以使用
    11       比如 Math String Number Boolean Function Object 
    12       
    13     2.宿主对象
    14       由JS的运行提供的对象,目前来讲指由浏览器提供的对象
    15       比如 BOM DOM
    16       
    17     3.自定义对象
    18     由开发人员自己创建的对象
    19    */
    20   
    21   /*
    22   在对象中保存的值称为属性
    23   向对象添加属性
    24   语法 对象.属性名 = 属性值;
    25   读取对象中没有的属性,不会报错而是会返回undefined
    26   
    27   修改属性值
    28   对象.属性名=新值;
    29   
    30   删除对象的属性
    31   真删除:delete 对象.属性名; delete 对象[]
    假删除:利用访问对象不存在的成员,返回undefined的特征,我们把某个成员的值修改为undefined,这样以后再获取这个成员,结果也是undefined,我们可认为为当前成员是不存在的,本质是存在的
    32 33 使用new关键字调用的函数,是构造函数constructor 34 构造函数是专门用来创建对象的函数 35 */ 36 var obj=new Object(); 37 obj.name="wxy"; 38 </script> 39 </head> 40 <body> 41 </body> 42 </html>
    /*
     * 对象数据类型
     *   + 普通对象 {} 「类数组、实例、原型对象...」
     *   + 数组对象 []
     *   + 正则对象 /^$/
     *   + 日期对象
     *   + Set/Map
     *   + ...
     */
    
    // 特殊对象:数组或者类数组对象(集合)
    //  + 属性名(成员/键)是数字,而且数字从零开始,逐级递增  =>有顺序和规律的数字属性名被称为“索引”:记录每一项的位置信息的
    //  + 有一个length成员,存储集合的长度
    
    // “数组/类数组[索引]” 进行成员访问以及相关的操作
    
    /* 
    // 数组 =>它是Array类的实例
    var arr = [10, 20, 30];
    console.log(arr[0]); //获取第一项的值
    console.log(arr[arr.length - 1]); //获取最后一项的值
    console.log(arr); 
    */
    
    /* 
    // 类数组(类似于数组,但是不是数组) =>不是Array的实例,虽然结构类似,但是不能直接使用数组的办法
    var obj = {
        0: 10,
        1: 20,
        2: 30,
        length: 3
    };
    console.log(obj);
    
    // HTMLCollection元素集合:类数组
    console.log(document.getElementsByTagName('*'));
    // NodeList节点集合:类数组
    console.log(document.querySelectorAll('*'));
    */
    
    //-------------
    /* 
     * ==普通对象== 
     *  1. 对象是由零到多组“键值对”(属性名和属性值)组成的
     *     {key:value,...}
     *     + 属性名(键)不是变量,它是对象的一个属性(特征)
     *     + 属性名一般都是一个字符串(当然也可以是数字或者Symbol等基本类型的值)
     *     + 属性名不能是对象,对象作为属性名,浏览器会把其转换为字符串
     */
    /* 
    // 管理一个对象的成员
    //   + 直接编写在大括号中的(对于Symbol或者对象类型的属性名,再以及需要把一个变量存储的值作为属性名,需要基于中括号包裹起来,保证语法的正确性)
    //   + 基于JS动态管理成员(新增/修改/删除)
    //     + 对象的成员是不允许重复的(0和'0'是按照相同的成员处理的),在动态管控的时候,之前有这个成员则是修改成员的属性值,没有这个成员才是给对象新增一个成员
    var symb = Symbol('xx');
    var obj = {
        name: '珠峰培训',
        0: 10
    };
    obj.age = 11;
    obj["age"] = 11;
    obj[symb] = 'xxx'; //-> obj[Symbol(xx)]='xxx'
    
    obj['name'] = "周啸天";
    console.log(obj[0]); //10
    console.log(obj["0"]); //10 如果成员名是数字,用字符串或数字访问都是可以的
    
    // 假删除:利用访问对象不存在的成员,返回undefined的特征,我们把某个成员的值修改为undefined,这样以后再获取这个成员,结果也是undefined,我们则可以认为当前成员是不存在(本质还是存在的)
    // obj.name = undefined;
    
    // 真删除:彻底从对象中移除这个成员
    // delete obj["name"];
    
    console.log(obj);
    */
    
    /* var symb = Symbol('xx');
    var obj = {
        name: '珠峰培训',
        0: 10,
        // symb: 'xxx', //这样处理,属性名就是"symb",而不是这个变量存储的值
        [symb]: 'xxx' //这样处理,属性名是Symbol(xx),等同于把变量存储的值作为属性名
    };
    console.log(obj[symb]); //'xxx' */
    
    //-------------
    /* 
    var x = 10;
    var obj = {
        x: "珠峰培训",
        10: 100
    };
    console.log(obj.x); //访问当前对象属性名是"x"对应的属性值 ->"珠峰培训"
    console.log(obj['x']); //和上面操作是一个意思,也是访问"x"的属性值 ->"珠峰培训"
    console.log(obj[x]); //首先获取x变量存储的值,把存储的值作为属性名,进行对象的成员访问 -> obj[10] ->100
    // 'x' 字符串类型的值
    // x 它不是值,它是一个变量,代表存储的10
    // + obj[值] 直接是对象的成员访问
    // + obj[变量] 首先获取变量值,然后把变量存储的值作为属性名,再进行对象的成员访问 
    */
    
    //-------------
    /* 
    // 获取一个对象中某个属性名对应的属性值 “对象的成员访问”
    //  + 对象.属性名
    //    + 这种方式不适用于“数字或者Symbol的类型”的属性名,这样的情况只能基于 对象[属性名] 来访问
    //  + 对象[属性名]
    //    + 这种方式必须指定好属性的类型  “obj[name] 和 obj["name"] = obj.name不是一个情况”
    var obj = {
        name: '珠峰培训',
        0: 100
    };
    console.log(obj.name); //'珠峰培训'
    console.log(obj["name"]); //'珠峰培训'
    console.log(obj[0]); //100
    // console.log(obj.0); //Uncaught SyntaxError: missing ) after argument list,如果属性名是数字的话,只能用上述方法
    
    console.log(obj.age); //访问对象的某个成员,如果当前成员没有在对象中,不会报错,访问到的结果是undefined而已
    console.log(age); //如果是访问一个不存在变量,则会报错 Uncaught ReferenceError: age is not defined 
    */
    
    //-------------
    /* var x = {
        xx: 'xxx'
    };
    
    var y = {
        // name叫做属性名,此处本身也是一个字符串 "name"
        // "珠峰培训"是当前name属性的属性值
        name: "珠峰培训",
        age: 11,
        0: 100,
        // 对于Symbol类型的属性名,需要基于[]包裹起来,保证语法正确性
        [Symbol('AA')]: 200,
        // 属性名不是这个对象,而是变为最后的字符串 ({xx:'xxx'}).toString() => "[object Object]"
        [{xx:'xxx'}]:300,
        // x->"x"
        x: 300
    };
    console.log(y);
    //y["[object Object]"] --300
    */

    对象是由零到多组“键值对”(属性名和属性值)组成的
    +属性名(键)不是变量,它是对象的一个属性(特征)
    +属性名一般都是一一个字符串(当然也可以是数字或者Symbol等基本类型的值)
    +属性名不能是对象或者函数,对象或者函数作为属性名,浏览器会把其转换为字符串作为属性名

    特殊对象:数组或者类数组对象(集合)
    +属性名(成员/键)是数字,而且数字从零开始,逐级递增 =>有顺序和规律的数字属性名被称为“索引":记录每一 项的位置信息的
    +有一个length成员,存储集合的长度
    “数组/类数组[索引]”进行成员访问以及相关的操作

  • 相关阅读:
    .vimrc
    GNU_makefile_template
    EM算法
    《设计模式之禅》学习笔记
    k-近邻算法
    机器学习基础
    《机器学习实战》学习笔记
    使用Apriori算法和FP-growth算法进行关联分析
    An ffmpeg and SDL Tutorial
    在Qt Creator中添加OpenCV库
  • 原文地址:https://www.cnblogs.com/zuiaimiusi/p/11218598.html
Copyright © 2020-2023  润新知