javascript ES5 Object.create 使用方法

本文介绍了ES5中新增的Object.create()方法,展示了如何创建新的对象并设置属性的值、只读性、枚举性和可配置性,以及get和set函数在实现访问控制和数据保护中的应用。通过实例演示了如何检查密码权限和修改密码的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 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' // 输出  ‘该用户没有权限修改密码’
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值