1 <script type="text/javascript"> 2 var myObject=maker({ 3 first:f, 4 last:1, 5 state:s, 6 city:c 7 }); 8 //////////////////////////////////////// 9 Object.beget=function(o){ 10 var F=function(o){}; 11 F.prototype =o; 12 return new F; 13 } 14 var myMammal={ 15 name:'Herb the Mammal', 16 get_name:function (){ 17 return this.name; 18 } 19 says:function(){ 20 return this.saying||''; 21 } 22 }; 23 var Cat={ 24 name:'', 25 saying:'meow' 26 }; 27 var myCat=Object.beget(Cat); 28 myCat.name='mimi'; 29 30 var myCat=Object.beget(myMammal); 31 /*引用*/ 32 var x=stooge; 33 x.nickname='Curly'; 34 var nick=stooge.nickname; 35 //对象永远不会被拷贝,因为它是引用类型的。 36 var a={},b={},c={}; 37 //a,b,c 每个都有一个不同的控对象。 38 a=b=c={}; 39 //a,b,c都引同一个控对象。 40 41 /*更新*/ 42 stooge['first-name']='Jerome'; 43 //如果对象之前并没有拥有那个属性名,那么该属性就被扩充到该对象中 44 stooge['middle-name']='Lester'; 45 stooge.nickname='Curly'; 46 flight.equipment={ 47 model:'Boeing 777' 48 }; 49 flight.status='overdue'; 50 /*检索*/ 51 要检索的对象中包含的值,可以采用在[]后缀中括注一个字符串的方式, 52 还可以通过.表示法。 53 如果属性名是一个常量,而不是变量的话,优先使用.表示法,因其可读性更好 54 stooge["first-name"] //"Joe" 55 flight.departure.IATA //"SYD" 56 stooge["middle-name"] //underfined 57 flight.states //underfined 58 stooge["first-name"] //underfined 59 60 ||运算符可以填充默认值: 61 var middle=stooge["middle-name"]||"(none)"; 62 var states=flight.states||"unknown"; 63 64 &&运算符可以用来避免错误 65 flight.equipment //underfined 66 flight.equipment.model //underfined 67 flight.equipment && flight.equipment.model //underfined 68 </script>