13_对象扩展.html 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <script>
  10. // let objVal = "age";
  11. // let age = 18;
  12. // 如果对象中属性名和变量名相同 可以直接写属性名 不需要写 :变量名
  13. // 对象中定义方法可以直接写方法名 不需要写 :function
  14. // let obj = {
  15. // age,
  16. // school:"xxx大学",
  17. // username:"李四",
  18. // talk(){
  19. // console.log("我在说话");
  20. // }
  21. // }
  22. // obj.objVal = 18;
  23. // 动态添加属性 可以使用变量来添加属性 写在[]内 []内可以写一写简单的表达式
  24. // obj[objVal] = 18;
  25. // obj[objVal+"2"] = 20;
  26. // console.log(obj);
  27. let obj2 = {
  28. age:20,
  29. school:"xxx大学"
  30. }
  31. let obj3 = {
  32. age:20,
  33. school:"xxx大学"
  34. }
  35. let obj4 = obj3;
  36. let a = "hello";
  37. let b = "hello";
  38. // Object.is 判断的是栈内存中的值
  39. // console.log(Object.is(a,b));
  40. // console.log(obj2 == obj3);
  41. let obj5 = {
  42. username:"张三",
  43. age:30
  44. }
  45. // 对象的一个合并 最前面的对象作为接收方 会把后边所有对象的属性合并到第一个对象中
  46. // 如果对象有属性冲突后边对象会覆盖前边对象的属性
  47. Object.assign(obj2,obj5);
  48. console.log(obj2);
  49. // in 判断对象中是否包含指定的属性 判断的属性需要加""
  50. // console.log("age2" in obj5);
  51. // for ... in 可以遍历对象 默认遍历值是 属性名
  52. for( let keys in obj2 ){
  53. console.log(keys);
  54. console.log(obj2[keys]);
  55. }
  56. // keys() 可以把对象中所有属性名拼合成数组返回
  57. console.log(Object.keys(obj2));
  58. </script>
  59. </body>
  60. </html>