JavaScript 控制对象

黄良钵

分类: 程序开发 0 0

  1. var p = {}
  2. p.name = 'wangBaoQiang'
  3. p.age = 30
  4. p.show = function(){
  5.     console.log('你们好')
  6. }
  7. // 那怎样才能删除age属性呢?
  8. // console.dir(p)
  9. // p.age = undefined
  10. // console.dir(p)
  11. // p.age = null
  12. // console.dir(p)
  13. // 上述方法只能改变属性的值 不能删除属性
  14. delete p.age
  15. console.dir(p)
  16. delete p.show
  17. console.dir(p)
  18. // delete 不光能删除属性也可以删除方法
  19. var num = new Number(3.14159)
  20. console.log(num)
  21. var obj = new Object(3.14159)
  22. console.log(obj)
  23. var b =new Object(true)
  24. console.log(b)
  25. var p = {
  26.     name:'BaoBao',
  27.     age:3
  28. }
  29. var p1 = {
  30.     name:'maRong',
  31.     age:4
  32. }
  33. Object.defineProperty(p1,'isMale',{
  34.     value:true,
  35.     configurable:true,
  36.     writable:true,
  37.     enumerable:true
  38. })
  39. // defineProperty 为对象定义一个新的属性
  40. // 三个参数
  41. //     第一个参数:要添加新属性的对象
  42. //     第二个参数:属性名称
  43. //     第三个参数:属性描述对象{
  44. //         value:属性值
  45. //         configurable 默认为false 指定属性是否被删除 false无法删除
  46. //         writable 指定属性值是否能改变
  47. //         enumerable 属性名是否在枚举中 也就是说可以被for...in...列举出来
  48. //     }
  49. // delete p1.isMale
  50. p1.isMale = '111'
  51. console.log(p1)
  52. for(var k in p1){
  53.     console.log(k)
  54. }
  55. p1.height = 100
  56. var heightDesc = Object.getOwnPropertyDescriptor(p1,'height')
  57. console.log(heightDesc)
  58. // 在p1对象里获取属性height的描述信息
  59. // 创建一批表示人的p对象 比如100人
  60. var p2 = {
  61.     name:'1',
  62.     age : '3',
  63.     desc:'我的名字叫baoqiang,今年28'
  64. }
  65. var p3 = {
  66.     name:'2',
  67.     age : '4',
  68.     desc:'我的名字叫marong,今年48'
  69. }
  70. var p4 = {
  71.     name:'3',
  72.     age : '7',
  73.     desc:'我的名字叫songzhe,今年38'
  74. }
  75. // 使用构造函数
  76. // 把一个函数当成构造函数使用 函数名字首字母大写
  77. // Pascal命名法
  78. function Person(name,age,isMale,height){
  79.     this.name = name
  80.     this.age = age
  81.     this.isMale = isMale
  82.     this.height = height
  83.     Object.defineProperty(this,'birthYear',{
  84.         configurable:false,
  85.         enumerable:true,
  86.         get:function(){
  87.             var year = new Date().getFullYear()
  88.             return year - this.age
  89.         },
  90.         set:function(value){
  91.             var year = new Date().getFullYear()
  92.             if(value > 2017){
  93.                 alert('出生年份不能大于' + year)
  94.                 return
  95.             }
  96.             this.age = year - value
  97.         }
  98.     })
  99. }
  100. // 把定义的属性代码移到构造函数中 之后 通过构造函数创建的对象都会有这些属性
  101. var person = new Person('1','3','4','5')
  102. var person1 = new Person('4',28,'6','7')
  103. // 通过person1.birthYear获取属性值时会调用属性指定的get方法 计算出属性值
  104. person1.birthYear = 2200
  105. console.log(person)
  106. console.log(person1.birthYear)
  107. // 没有set方法的情况下 无法通过[.属性 = 值]改变属性的值 
  108. // 有set方法时 通过[.属性 = 值]设置值的时候
  109. // 会调用set方法 将 = 后面的值当做参数传给set方法
  110. // 已保留或者转换这个值
  111. console.log(p4)
  • 0人 Love
  • 0人 Haha
  • 0人 Wow
  • 0人 Sad
  • 0人 Angry
JavaScript、控制对象

作者简介:黄良钵

打赏

博客站长,前端开发工程师

共 0 条评论关于 “JavaScript 控制对象”

Loading...