JS 对象属性定义、检测与枚举

news/2024/5/18 22:07:38 标签: 枚举, js, 属性定义, 属性检测

在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的。
    可枚举性决定了这个属性能否被for…in查找遍历到。
    
    判断对象是否可枚举
        Object 对象的 propertyIsEnumerable() 方法可以判断此对象是否包含某个属性,并且这个属性是否可枚举
            1. 如果判断的属性存在于Object对象的原型内,不管它是否可枚举都会返回false。
            2. 这个属性必须属于实例的,并且不属于原型.
            3. 这个属性必须是可枚举的,也就是自定义的属性,可以通过for..in循环出来的。

    注意:
        1. js中基本包装类型的原型属性是不可枚举的,如Object, Array, Number等
            
    hasOwnProperty(property)
    判断对象是否有某个特定的实例属性。必须用字符串指定该属性
            
    Object.defineProperty定义属性,enumerable描述是否可枚举
    enumerable => false 标识不可枚举
    enumerable => true 标识可枚举
    语法:
        Object.defineProperty(obj, prop, descriptor)
            obj        待修改的对象
            prop        带修改的属性名称
            descriptor        待修改属性的相关描述

    实例:
        const obj = {}
        Object.defineProperty(obj, 'name', {value: 'mike', enumerable: false})


http://www.niftyadmin.cn/n/1162531.html

相关文章

网络请求框架 Okhttp

OkHttp 简介: OkHttp是一个高效的HTTP客户端 使用builders构造器模式,支持阻塞式的同步请求和带回调的异步请求。 特性: 1. 允许所有同一个主机地址的请求共享同一个socket连接 2. 连接池减少请求延时 3. 透明的GZI…

Volley

StringRequest的用法: 1. GET 请求// 获取到RequestQueue对象RequestQueue mQueue Volley.newRequestQueue(context);/*** 创建一个StringRequest对象* StringRequest的构造函数需要传入三个参数* param1: 目标服务器的URL地址* param2: 服务器响应成功的回调* param3: …

网络请求框架 Retrofit

创建实例: Retrofit retrofit new Retrofit.Builder().baseUrl("http://localhost:4567/").build(); 注意: 创建Retrofit实例时需要通过Retrofit.Builder,并调用baseUrl方法设置URL。 Retrofit2 的baseUlr 必须以 /&#xf…

Android utilcode 工具依赖库

引入: implementation com.blankj:utilcode:1.18.2 API 介绍: https://blog.csdn.net/qq_38998213/article/details/82181309 github官网地址: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/README-CN…

java 关键字 volatile、synchronized、Lock

volatile: 简介: 用以声明变量的值可能随时会别的线程修改 使用volatile修饰的变量会强制将修改的值立即写入主存 主存中值的更新会使缓存中的值失效 特性: 1. 可见性 当多个线程访问同一个变量时,…

vue nextTick

由来: Vue中DOM更新是异步 Vue 实现响应式并不是数据发生变化之后 DOM 立即变化, 而是等同一事件循环中的所有数据变化完成之后,再统一进行视图更新。 触发条件: 在同一事件循环中的数据变化后,DOM完…

js 实现继承

1. 对象冒充实例:var Parent function (username) {this.username usernamethis.getUserName function () {console.log(username: username)}}var Child function (username, age) {this.method Parentthis.method(username)delete this.methodthis.getAge …

vue 可拖拽table

Element UI下的示例&#xff1a; <template><div style"width:800px"><el-table :data"tableData"borderrow-key"id"align"left"><el-table-column v-for"(item, index) in col":key"col_${inde…