javascript ES5 Object.create 使用方法

一、 ES5当中新增加了一些对象方法

    1. Object.create(prototype, [descriptors])
  • 参数介绍

prototype

一个对象,作为新创建对象的原型。如果 proto 参数不是 null 或一个对象值,则抛出一个 TypeError
异常。null表示没有原型对象(这样就创建了一个"干净的对象")

descriptors

一个对象值,可以包含若干个属性,属性名为新建对象的属性名,属性值为那个属性的属性描述符对象.(属性将做简单介绍,后面将详细解答)

  	  **value**:  设置属性的值
  	  **writable**:  布尔值,设置属性是否可以被重写,默认属性值为false(不能被重写)
  	  **enumerable**:  布尔值,设置属性是否可以被枚举,默认属性值为false(不能被枚举)
  	  **configurable**:  布尔值,设置属性是否可以被删除,默认属性值为false(不能被删除)
  	  **get**:  函数,设置属性返回结果(后面解答)
  	  **set**:  函数,有一个参数(后面解答)
  • var obj = Object.create(null)

    No properties,创建了一个"干净"的对象;

  • 创建一个带有value值的对象

    var obj = Object.create(Object.create, {
      type: {
      	value: 'objName'
      }
    })
    console.log(obj.type) // objName
    
  • get、set使用

假设对象中存储了用户的密码,我们需要判断用户的密码有没有设置,如果没有则需要返回提示
如果修改密码,要根据对象中的jurisdiction字段,判断该用户是否有更改密码的权限

	var account = Object.create(Object.prototype, {
    	name: {
    		value: '销售',
    		writable: false,
            enumerable: false,
            configurable: true
    	},
    	password: {
			get: function () {
				if (!this.jurisdiction) {
					return '该用户没有权限修改密码'
				}
				if ((typeOf password === 'undefined')) {
					return '该用户没有设置密码'
				}
				return '用户密码为:' + password  // 如果设置了,则把密码返回出去
			},
			set: function (psw) {
				if (this.jurisdiction) {
					password = psw
				}
			}
		},
		jurisdiction: {
			value: true,
			writable: true
		}
    })
	account.name // 输出 ‘销售’
	account.password // 输出  ‘该用户没有设置密码’
	account.password = '1809111000'  // 输出  ‘用户密码为:1809111000’
	
	account.jurisdiction = false;
	account.password = '1809111010' // 输出  ‘该用户没有权限修改密码’

你可能感兴趣的:(ES5,javascript,es)