• JavaScript语言精粹1字符串,对象字面量


    字符串 Strings

    JavaScript没有,字符,类型。仅包含一个字符的,字符串即可。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>testString1</title>
        <style type="text/css"></style>
    </head>
    <body>
        
    </body>
    </html>
    <script type="text/javascript">
    //javascript没有 字符  一个字符的 字符串 就是 字符
        var str1 = "I";
    //字符串 有  length 属性的!
        var str2 = "I am ";
        console.log(str1.length);
        console.log(str2.length);
    //字符串一旦创建,无法改变,用 + 连接字符串
        if('c'+'a'+'t' === "cat") console.log("字符串拼接,值相等,类型相等");
        //字符串转大写的方法
        console.log('cat'.toUpperCase() === "CAT");
    </script>

    对象Objects

    JavaScript的简单数据类型:数字、字符串、布尔值、null值和undefined值,其他所有值都是对象。数字、字符串、布尔值“貌似”对象,因为它们拥有方法,但是,它们是不可变的!数组、函数、正则表达式都是对象。

    对象是,属性的,容器。每个属性,都有名字和值。属性的名字,可以是包含,空字符串,在内的,任何字符串!属性的值,是可以除undefined值之外的任何值。

    JavaScript里的对象是无类型(class-free),它对新属性的名字和值,没有限制。对象,可以包含,对象!这样可以容易地表示成树状或图形结构。

    JavaScript包含一种,原型链的特性,允许对象继承另一个对象的属性!正确用之,可减少对象初始化时消耗的时间和内存。


    对象字面量 Object Literals

    一个对象字面量,就是包围在一对,花括号中的,零或多个“名/值”对。对象字面量可以出现在任何允许表达式出现的地方。

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>testObject1</title>
     6 
     7 </head>
     8 <body>
     9     
    10 </body>
    11 </html>
    12 <script type="text/javascript">
    13 //属性名,是可以包含,空字符串在内的,任何字符串!
    14     var empty_object = {};    
    15 //对象,是属性的容器
    16     var stooge = {
    17         //JavaScript中标识符是不允许"-",但是允许下划线"_"
    18         //对象字面量中,属性名,可以是标识符,也可以是字符串
    19         //如果是合法的标识符,不用引号
    20         //first-name不是合法的标识符,所以必须用引号!!名/值
    21         // , 号分割多个 "名/值"对
    22         "first-name": "Jerome",
    23         //合法的标识符,由一个字母开头,选择地加上一个或多个字母或数字或下划线"_"
    24         //first_name: "Jerome",   //first_name 用不用引号,是可选的。
    25         //属性名,不可以是,保留关键字
    26         "last-name": "Howard"
    27     };
    28 //对象是可以嵌套的!    
    29     var flight = {
    30         airline: "Oceanic",
    31         number : 815,
    32         //属性的值,可以从,包括另一个对象字面量在内的,任意表达式中获得
    33         departure: {
    34             IATA: "SYD",
    35             time: "2004-09-22 14:55",
    36             city: "Sydney"
    37         },
    38         arrival: {
    39             IATA:"LAX",
    40             time: "2004-09-23 10:42",
    41             city: "Los Angeles"
    42         }    
    43 
    44 
    45     };
    46 //检索对象里的值
    47     //检索对象里包含的值,可以用在[]后缀中加,括住字符串表达式的方式。
    48     //此处,first-name不是合法的标识符,采用了[]
    49     console.log(stooge["first-name"]); //"Jerome"
    50     // console.log(stooge.first-name);
    51     //如果属性名是一个字符串字面量,而且是合法的标识符。优先使用 . 表示法
    52     console.log(flight.number);// 815
    53     console.log(flight.departure);//Objec {IATA: "SYD",time: "2004-09-22",city: "Sydney"}
    54     console.log(flight.departure.city); //"Sydeny"
    55 
    56 //检索一个不存在的成员属性的值,将返回undefined
    57 //undefined是,经过了,原型链检索,不存在返回的值。
    58 //一个对象,有它的原型对象,并继承原型对象的属性值,当检索该对象不存在的属性时,则向上检索它的原型对象,
    59 //当原型对象没有的情况,会继续向原型对象的 原型对象检索,直到Object.prototype当完全不存在原型链中,即undefined
    60 
    61     console.log(stooge["middel-name"]); // undefined
    62     console.log(flight.status);//undefined
    63     // 用 || 填充默认值
    64     var middle = stooge["middle-name"] || "(none)";
    65     var status = flight.status || "unknow";
    66     console.log(middle,status);// (none) "unknow"
    67 //尝试从undefined的成员属性中,取值,会导致TypeError,可以通过&& 避免错误
    68     console.log(flight.equiment);// undefined
    69     // console.log(flight.equiment.model);// throw "TypeError"
    70     console.log(flight.equiment && flight.equiment.model);
    71 //更新
    72     //属性名已经存在对象里,那么属性的值会被替换
    73     stooge["first-name"] = "Jack";
    74     console.log(stooge["first-name"]);//"Jack"
    75     //对象之前没有的属性,会被扩充到对象里
    76     stooge["middle-name"] = "Lester";
    77     stooge.nickname = "Curly";
    78     flight.equiment = {
    79         model: "Boeing 777"
    80     };
    81     console.log(stooge.nickname);//Curly
    82     console.log(flight.equiment);//Object ......
    83     console.log(flight.equiment.model);//"Boeing 777"
    84 //引用传递
    85     //对象是通过引用来传递,不会被复制!!
    86     var x = stooge;
    87     console.log(x.nickname);//"Curly"
    88     var nick = stooge.nickname;
    89     console.log(nick);//Curly
    90     //x 和 stooge,是指向同一个对象,的,引用!所以nick值为"Curly"
    91     x.nickname ="Tom";
    92     //此处,通过同一对象的另一个引用,修改了,原对象中的nickname属性值!
    93     console.log(stooge.nickname);//"Tom"
    94 
    95 
    96 </script>
  • 相关阅读:
    Linq之旅:Linq入门详解(Linq to Objects)【转】
    Shadow Map 原理和改进 【转】
    OSG 中文解决方案 【转】
    shadow mapping实现动态shadow实现记录 【转】
    RenderMonkey 练习 第六天 【OpenGL Water 水效】
    glsl水包含倒影的实现(rtt) 【转】
    Docker镜像仓库Harbor之搭建及配置
    docker登录没有配置https的harbor镜像仓库
    Git 清除远端已删除的分支
    单节点k8s的一个小例子 webapp+mysql
  • 原文地址:https://www.cnblogs.com/concentration-web/p/6340140.html
Copyright © 2020-2023  润新知