- var p = {}
- p.name = 'wangBaoQiang'
- p.age = 30
- p.show = function(){
- console.log('你们好')
- }
- // 那怎样才能删除age属性呢?
- // console.dir(p)
- // p.age = undefined
- // console.dir(p)
- // p.age = null
- // console.dir(p)
- // 上述方法只能改变属性的值 不能删除属性
- delete p.age
- console.dir(p)
- delete p.show
- console.dir(p)
- // delete 不光能删除属性也可以删除方法
- var num = new Number(3.14159)
- console.log(num)
- var obj = new Object(3.14159)
- console.log(obj)
- var b =new Object(true)
- console.log(b)
- var p = {
- name:'BaoBao',
- age:3
- }
- var p1 = {
- name:'maRong',
- age:4
- }
- Object.defineProperty(p1,'isMale',{
- value:true,
- configurable:true,
- writable:true,
- enumerable:true
- })
- // defineProperty 为对象定义一个新的属性
- // 三个参数
- // 第一个参数:要添加新属性的对象
- // 第二个参数:属性名称
- // 第三个参数:属性描述对象{
- // value:属性值
- // configurable 默认为false 指定属性是否被删除 false无法删除
- // writable 指定属性值是否能改变
- // enumerable 属性名是否在枚举中 也就是说可以被for...in...列举出来
- // }
- // delete p1.isMale
- p1.isMale = '111'
- console.log(p1)
- for(var k in p1){
- console.log(k)
- }
- p1.height = 100
- var heightDesc = Object.getOwnPropertyDescriptor(p1,'height')
- console.log(heightDesc)
- // 在p1对象里获取属性height的描述信息
- // 创建一批表示人的p对象 比如100人
- var p2 = {
- name:'1',
- age : '3',
- desc:'我的名字叫baoqiang,今年28'
- }
- var p3 = {
- name:'2',
- age : '4',
- desc:'我的名字叫marong,今年48'
- }
- var p4 = {
- name:'3',
- age : '7',
- desc:'我的名字叫songzhe,今年38'
- }
- // 使用构造函数
- // 把一个函数当成构造函数使用 函数名字首字母大写
- // Pascal命名法
- function Person(name,age,isMale,height){
- this.name = name
- this.age = age
- this.isMale = isMale
- this.height = height
- Object.defineProperty(this,'birthYear',{
- configurable:false,
- enumerable:true,
- get:function(){
- var year = new Date().getFullYear()
- return year - this.age
- },
- set:function(value){
- var year = new Date().getFullYear()
- if(value > 2017){
- alert('出生年份不能大于' + year)
- return
- }
- this.age = year - value
- }
- })
- }
- // 把定义的属性代码移到构造函数中 之后 通过构造函数创建的对象都会有这些属性
- var person = new Person('1','3','4','5')
- var person1 = new Person('4',28,'6','7')
- // 通过person1.birthYear获取属性值时会调用属性指定的get方法 计算出属性值
- person1.birthYear = 2200
- console.log(person)
- console.log(person1.birthYear)
- // 没有set方法的情况下 无法通过[.属性 = 值]改变属性的值
- // 有set方法时 通过[.属性 = 值]设置值的时候
- // 会调用set方法 将 = 后面的值当做参数传给set方法
- // 已保留或者转换这个值
- console.log(p4)
暂无评论