首页 > 代码库 > JavaScript语言精粹1字符串,对象字面量

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>

 

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