1 2015.11.1 犀牛书读书笔记
2
3 //page123 6.2
4 var person={
5 name:"wang",
6 age:18,
7 sex:"man"
8 }
9
10 访问属性的方式有两种:
11 1. person.name;
12 2. person["name"]
13
14 可以获得属性或者给属性赋值
15 []方括号内必须是字符串,可以是字符串变量
16 用以访问关键字或是空格的属性名
17 例如: person["class"]; person["my name"]
18
19 associative array 关联数组
20 person["name"]这种访问方式类似于数组,只不过是用字符串作为索引,这种数组也称为散列、映射或是字典.
21 javascript的对象都是关联数组(或是散列、映射或是字典)
22
23 C和C++、java这类称为强类型语言strong typed,对象只能拥有固定数目的属性,并且属性名称应该提前定义好。
24 而javascript是弱语言类型,在任何对象中程序都可以创建属性,动态的给对象添加。
25
26 var customer={
27 address0:"a",
28 address1:"aa",
29 address2:"aaa",
30 address3:"aaaa",
31 }
32 var addr="";
33 for (var i = 0; i <4; i++) {
34 addr=customer["address"+i]+"\n";
35 }
36 数组写法,访问对象属性的灵活性
37
38 //page125 继承
39 查询一个对象o的x属性:
40 o-->o.prototype-->o.prototype.prototype //此时也许将o.prototype赋给了其他对象
41
42 属性赋值操作首先检查原型链,判定是否允许赋值操作
43 若允许赋值,也只会在原始对象上创建属性,而不会去修改原型链
44 例子:
45 var unitcircle={r:1};
46 var c=inherit(unitcircle);
47 c.x=1;c.y=2;
48 c.r=5;
49 unitcircle.r;//仍然为1,因为c.r会在c的域内创建r属性,不会影响原型链
50
51 访问一个没有定义的属性不会出错
52 var o={};
53 o.sub;//undenfined------>并不会出错
54
55 var x=book&&book.subtitle&&book.subtitle.length;//&&短路原理,当为真时才执行下一项。 为假时立即赋值并退出
56
57 delete运算符可以删除对象的属性,格式为 delete person.name 或者 delete person["name"]
58 delete不能删除那些可配置性为false的对象
59 比如:
60 function f(){}
61 delele f;
62
63
64