首页 > 其他分享 >JS

JS

时间:2023-07-17 09:34:44浏览次数:30  
标签:false Object value JS 修改 true 属性

JS

Object.defineProperty()

Object.defineProperty()方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。

  1. 语法:

    Object.defineProperty(obj, prop, descriptor)

  2. 参数:

    obj

    • 要在其上定义属性的对象。

    prop

    • 要定义或修改的属性的名称。

    descriptor

    • 将被定义或修改的属性描述符。

描述

该方法允许精确添加或修改对象的属性。通过赋值操作添加的普通属性是可枚举的,能够在属性枚举期间呈现出来(for...in 或 Object.keys 方法), 这些属性的值可以被改变,也可以被删除。这个方法允许修改默认的额外选项(或配置)。默认情况下,使用 Object.defineProperty() 添加的属性值是不可修改的。

  1. value

    • 该属性对应的值。可以是任何有效的 JavaScript 值(数值,对象,函数等)。默认为 undefined。
  2. writable

    • 当且仅当该属性的writable为true时,value才能被赋值运算符改变。默认为 false。
  3. configurable

    • 当且仅当该属性的 configurable 为 true 时,该属性描述符才能够被改变,同时该属性也能从对应的对象上被删除。默认为 false。
  4. enumerable

    • 当且仅当该属性的enumerable为true时,该属性才能够出现在对象的枚举属性中。默认为 false。
  5. get

    • 一个给属性提供 getter 的方法,如果没有 getter 则为 undefined。当访问该属性时,该方法会被执行,方法执行时没有参数传入,但是会传入this对象(由于继承关系,这里的this并不一定是定义该属性的对象)。默认为 undefined。
  6. set

    • 一个给属性提供 setter 的方法,如果没有 setter 则为 undefined。当属性值修改时,触发执行该方法。该方法将接受唯一参数,即该属性新的参数值。默认为 undefined。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>回顾Object.defineproperty方法</title>
	</head>
	<body>
		<script type="text/javascript" >
			let number = 18
			let person = {
				name:'张三',
				sex:'男',
			}

			Object.defineProperty(person,'age',{
				// value:18,
				// enumerable:true, //控制属性是否可以枚举,默认值是false
				// writable:true, //控制属性是否可以被修改,默认值是false
				// configurable:true //控制属性是否可以被删除,默认值是false

				//当有人读取person的age属性时,get函数(getter)就会被调用,且返回值就是age的值
				get(){
					console.log('有人读取age属性了')
					return number
				},

				//当有人修改person的age属性时,set函数(setter)就会被调用,且会收到修改的具体值
				set(value){
					console.log('有人修改了age属性,且值是',value)
					number = value
				}

			})

			// console.log(Object.keys(person))

			console.log(person)
		</script>
	</body>
</html>

标签:false,Object,value,JS,修改,true,属性
From: https://www.cnblogs.com/hungrycats/p/17559105.html

相关文章

  • 一. JSON
    一.JSON1.JSON简介****(JavaScriptObjectNotation)是美国程序员DouglasCrockford构想和设计的一种轻量级数据交换格式.其内容有属性和值所组成,具有易于阅读和处理的优势.JSON是独立于编程语言的数据格式.JSON不仅是``​的子集,也采用了C语言家族的习惯用法,目前大......
  • JS制作一个网页版的猜数字小游戏
    一.网络游戏简介在输入框内输一个数字,点击后面的“猜”按钮,系统会根据你猜的数字的大小,返回你是猜大猜小还是猜正确,系统还会统计你猜的次数,在猜数字的途中你点击按钮随时可以重新开始游戏页面框架:<body><divid="i1"><span>请输入您猜的数字:</span><input......
  • vue.js 只能输入大写字母
    如何实现Vue.js只能输入大写字母本文将向刚入行的开发者介绍如何使用Vue.js实现只允许输入大写字母的输入框效果。我们将使用Vue.js的指令和事件处理来达到这个目标。实现流程下面是实现该功能的步骤,我们将逐一介绍每个步骤的实现细节。步骤描述1.创建Vue......
  • vue.js 如何查看引用的css
    在Vue.js中,我们可以通过以下几种方式来查看引用的CSS。一、浏览器开发者工具浏览器的开发者工具是一个非常有用的工具,我们可以使用它来查看页面中引用的所有CSS文件。下面是在Chrome浏览器中如何使用开发者工具查看引用的CSS。打开你的Vue.js应用并访问需要查看的页面。右键单......
  • vue.js - 不同参数同时请求同一个接口接口
    Vue.js-不同参数同时请求同一个接口接口概述在Vue.js中,我们可以使用Axios库来发送HTTP请求。当我们需要根据不同参数来请求同一个接口时,可以通过以异步的方式来实现。本文将教你如何使用Vue.js和Axios来实现这个功能。步骤下面是实现该功能的步骤:步骤描述1在Vue组......
  • vue node.js
    实现“VueNode.js”教程简介在本教程中,我将向你介绍如何使用Vue和Node.js创建一个完整的Web应用程序。Vue是一个流行的JavaScript框架,用于构建用户界面;而Node.js是一个基于JavaScript的运行时环境,用于构建服务器端应用程序。整体流程下面是实现“VueNode.js”的步骤:步骤......
  • js的在线编辑器jupyter
    官方文档:[n-riesco/ijavascript:IJavascript是Jupyter笔记本的javascript内核](https://github.com/n-riesco/ijavascript)Windows(Anaconda发行版)打开Anaconda提示符并运行:condainstallnodejsnpminstall-gijavascriptijsinstalljupyternotebook然后您可以在终......
  • 利用Python的JSON以及Base64模块实现二进制文件传输及反向Shell
    控制端代码:importsocketimportoptparseimportsysimportthreadingimportjsonimportbase64classMyTCPServer:def__init__(self)->None:self.port=self.get_param()try:self.s_socket=socket.socket(socket.AF_INET,......
  • vue.js浏览器插件
    提取地址:链接:https://pan.baidu.com/s/1Uf9yZaQfRQ1r2JvOxXX50A?pwd=l3iw提取码:l3iw加载已解压的扩展程序  ......
  • JSON.stringify的其他用法
    1.过滤属性,只将name和age转为字符串,其他的属性不要JSON.stringify(person,['name','age'])2.特定属性,返回特定值或不返回值//指定gender不返回内容JSON.stringify(person,(key,val)=>{if(key=='gender'){//返回undefined,将会过滤掉gender属性,同1......