javaScript(八) 对象

news2024/11/16 15:52:02

},

“arm”:{ //属性名

configurable:true, //允许删除,允许使用defineProperty()修改属性描述符

enumerable:true, //允许被搜索到

set:function (value) { //给这个属性设置一个函数,注意,调用对象的函数的方法是xm.xarm(),有括号的,代表方法,不是xm.xarm,没有括号意思是打印值

return value;

}

},

“xarm”:{ //属性名

configurable:false,

enumerable:false,

value:function () { //属性值,这边属性值是一个函数,注意,调用对象的函数的方法是xm.xarm(),有括号的,代表方法,不是xm.xarm,没有括号意思是打印值

alert(1);

}

}

})

Object.create(prototype,descriptor)

创建一个具有指定原型,可选择性包含指定属性的对象,最终返回的是新创建的对象

prototype:指新创建对象的原型对象

descriptor:添加到新创建对象的属性

var pol=Object.create(Object.prototype,{

glass:{ //属性名

value:“joy”, //属性值

writable:true, //可写入

configurable:false, //允许被defineProerty()修改,这个属性允许被delete删除,这个例子就是允许被delete pol.glass

enumerable:false //允许被for…in搜索到

}

})

console.log(pol)

属性的访问

var a={

name:“toy”,

sex:“男”,

asd:function(a){}

}

a.name;   //访问name属性,输出toy

a.asd(a);   //访问asd方法,并传参数a

a[‘name’]  //访问name属性,输出toy

a[‘asd’]   //?这个还要查一查

属性的设置

var pokx={

xaaa:“asd”

};

Object.defineProperties(pokx,{

name:{ //属性名

value:“joy”, //属性值

configurable:true, //可删除可修改属性描述符

writable:false //可写入修改

}

})

console.log(pokx)

pokx.xaaa;   //输出asd

pokx.xaaa=“qwe”;   //输出qwe,可修改

pokx.name;  //输出joy

pokx.name=“ree”;  //输出ree,因为writable为false,不允许写入

属性的删除

var pokx={

xaaa:“asd”

};

Object.defineProperties(pokx,{

name:{ //属性名

value:“joy”, //属性值

configurable:false, //可删除可修改属性描述符

writable:false //可写入修改

}

})

console.log(pokx)

delete pokx.xaaa;  //输出true,删除成功

delete pokx.name;   //输出false,删除失败,因为修改新定义的属性name的configurable设置成了false,不允许修改或删除

属性的检测

  • for…in:运算符,通过for…in检测对象上包括原型链上的所有具有枚举属性的对象

var obj={

xaaa:“asd”

};

Object.defineProperties(obj,{

name:{ //属性名

value:“joy”, //属性值

configurable:false, //可删除可修改属性描述符

writable:false, //可写入修改

enumerable:true

},

galss:{

value:function (a) {

return a

},

enumerable:true

},

shit:{

value:“ul”,

enumerable:false

}

})

Object.prototype.ola=function () {

};

for (var a in obj){

console.log(a); //这里输出把整个对象上添加的ola也输出了

}

  • **hasOwnProperty():**检测对象上的自由属性,如果是自有属性,则返回true,如果没有则返回false

for (var a in obj){

if(obj.hasOwnProperty(a)==true){ //也可以直接判断obj.hasOwnProperty(a)

console.log(a); //这里输出就不会出出ola属性了

}

}

  • **propertyIsEnumerable():**检测自有且可枚举的属性,是hasOwnProperty()方法的进一步加强

枚举属性

  • **for…in,**下例中用for…in显示了所有的枚举属性,如果enumerable设置了false,那么属性就不会被for…in到

  • Object.key(obj):是es5中的一个方法,只会将对象自有的属性名以数组的形式返回,**这个方法就不必担心有没有原型链上的对象,**示例如下

var obj={

xaaa:“asd”

};

Object.defineProperties(obj,{

name:{ //属性名

value:“joy”, //属性值

configurable:false, //可删除可修改属性描述符

writable:false, //可写入修改

enumerable:true

},

galss:{

value:function (a) {

return a

},

enumerable:true

},

shit:{

value:“ul”,

enumerable:false

}

})

Object.prototype.ola=function () {

};

var aox=Object.keys(obj);

console.log(aox);

这边最终会输出:[‘xaaa’,‘name’,‘galss’],其中shit因为enumerable设置了false,无法被枚举,而整个对象上的ola则不是obj的自有属性。

属性复制

Object.assign(terget,…sources)

terget:目标对象

…sources:一个或多个的源对象

  • 将所有 可枚举的属性的值 从 一个或多个源对象 上 复制 到 目标对象,然后将返回新生成的目标对象

  • 如果目标对象中的属性具有相同的键,则属性将被源中的属性覆盖后来的源的属性将类似的覆盖早先的属性

var aa={

name:“joy”,

glass:“sk”,

shit:“shit”

}

var ab={

name:“pol”,

shit:“sk”

}

var ac={

glass:“oi”

}

var ad=Object.assign(ac,aa,ab)

console.log(ad)

最终输出的ad:{name:“pol”,glass:“sk”,shit:“sk”},个人觉得,如果目标对是空对象,那么将源对象上的复制并覆盖过去可以说得通,如果是多个对象,就像上例中的那样,感觉其实更像是合并

对象的原型方法

Object.prototype.constructor;

通过这个方法返回目标对象的构造函数

var aoc=obj.constructor

console.log(aoc);

输出:object

Object.prototype.toString()

经常用来检测对象类型

console.log(aoc.call(new Object)) //[object Object]

React

  • 介绍一下react

  • React单项数据流

  • react生命周期函数和react组件的生命周期

  • react和Vue的原理,区别,亮点,作用

  • reactJs的组件交流

  • 有了解过react的虚拟DOM吗,虚拟DOM是怎么对比的呢

  • 项目里用到了react,为什么要选择react,react有哪些好处

  • 怎么获取真正的dom

  • 选择react的原因

  • react的生命周期函数

  • setState之后的流程

  • react高阶组件知道吗?

  • React的jsx,函数式编程

  • react的组件是通过什么去判断是否刷新的

  • 如何配置React-Router

  • 路由的动态加载模块

  • Redux中间件是什么东西,接受几个参数

  • redux请求中间件如何处理并发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1857693.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MacOS - ToDesk 无法远程操控鼠标键盘解决方案

问题描述 远程后发现画面显示正常,但是键盘和鼠标的操作没有响应。 原因分析 可能是辅助功能没有勾选ToDesk_Session的权限。 解决方案 系统设置 - 隐私与安全性 - 辅助功能 进去后找到 ToDesk,开关打开,输入系统密码,重启 App …

从0构建一个录制UI测试工具

很多UI自动化测试工具都具备录制UI自动化测试的能力,例如playwright,可以通过playwright vscode插件完成录制,如下图所示,当选择录制脚本时,会打开一个浏览器,在浏览器中输入被测应用url,用户在…

vscode用vue框架1写一个登陆页面

目录 一、创建登录页面 二、构建好登陆页面的路由 三、编写登录页代码 1.添加基础结构 2.给登录页添加背景 3.解决填充不满问题 4.我们把背景的红颜色替换成背景图: 5.在页面中央添加一个卡片来显示登录页面 6.设置中间卡片页面的左侧 7.设置右侧的样式及…

CPU1511作为CPU1513的智能IO设备

一、把一个IO控制器作为另一个IO控制器的IO设备来使用 1、在智能设备通信里定义好传输区后,导出GSD文件 2、在另一个项目程序内添加GSD文件 3、当作PLC的IO设备组态,并连接至PLC_1 4、在右侧更改I区、Q区地址与名称 5、硬件编译并下载,此…

天翼云服务器80、443等特殊端口无法访问原因记录

之前阿里云、腾讯云的服务器上,想要用域名访问项目简单配置就好了,这次甲方直接买的翼云的服务器,配置了半天,防火墙端口80、443端口开放了,控制台安全组也添加了,就是不能用域名或IP直接访问,配…

深入解析与解决高并发下的线程池死锁问题

问题背景 在现代互联网应用中,高并发场景是常态,为了高效处理大量用户请求,后端服务通常会采用线程池来管理线程资源。然而,在一个复杂的微服务架构项目中,我们遇到了一个棘手的问题:在业务高峰期&#xf…

解锁分布式云多集群统一监控的云上最佳实践

作者:在峰 引言 在当今数字化转型加速的时代,随着混合云、多云多集群环境等技术被众多企业广泛应用,分布式云架构已成为众多企业和组织推动业务创新、实现弹性扩展的首选,分布式云容器平台 ACK One(Distributed Clou…

ONLYOFFICE 文档 8.1 现已发布:功能全面的 PDF 编辑器、幻灯片版式、优化电子表格的协作等等

🔥 个人主页:空白诗 文章目录 一、引言二、ONLYOFFICE简介1. 文档编辑器2. 电子表格编辑器3. 演示文稿编辑器4. 项目管理5. 邮件和日历6. 客户关系管理(CRM)7. 安全性和权限管理8. 多平台和第三方集成 三、安装1. Windows/Mac 安装…

斯坦福大学 AI 研究部门推出的“7 周人工智能学习计划”

①AI Python 基础,包括计算机原理、语法、判断语句等; ②AI Python 进阶,涉及 Linux 命令、多任务编程等; ③机器学习,涵盖算法、数据结构等; ④计算机视觉与图像处理,包含图像分类、目标检测…

每日鲜语携手中国国家高尔夫球队队员殷若宁征战巴黎,打响中国高端鲜奶品牌“鲜”声量

近日,高端鲜奶品牌每日鲜语宣布携手蒙牛品牌代言人、中国国家高尔夫球队队员殷若宁,共赴巴黎奥运赛场,为梦想挥杆而上。邀请众多消费者开启高品质、健康的生活方式。此举不仅彰显了每日鲜语作为高端鲜奶新标杆的品牌定位,也同时延…

COMSOL Multiphysics物理模拟软件 下载安装,COMSOL Multiphysics 卓越的模拟性能

COMSOL Multiphysics,它不仅具备卓越的模拟性能,还以其创新的多物理场耦合分析能力,为各类复杂问题提供了前所未有的解决方案。 这款软件的出现,犹如为科研工作者和工程师们插上了一双智慧的翅膀,使他们能够在物理世界…

RubyMine 2024 mac/win版:智慧编程,从心出发

JetBrains RubyMine 2024 是一款专为Ruby和Rails开发者打造的高效集成开发环境(IDE)。它凭借其卓越的性能和丰富的功能,帮助开发者在Ruby和Rails的开发过程中提升效率,减少错误。 RubyMine 2024 mac/win版获取 RubyMine 2024 提供了强大的代码编辑功能&…

VR加密方案常见问题有哪些?

在数字化时代,随着虚拟现实(VR)技术的迅速发展与普及,VR视频内容的安全传输成为关注焦点。为保护版权及敏感信息免遭非法复制或篡改,VR视频加密技术显得尤为重要。 首先,高效的加密算法对确保数据安全性至关…

60.Python-web框架-Django手动删除了一个数据库表,migrate问题

目录 1.问题产生 2.解决方法: 1.问题产生 今天手欠,删了一个数据库表,然后迁移不进来了。 当你在Django项目中手动删除了数据库模型(models)的表后,想要Django通过makemigrations命令重新创建或识别这些更…

第四届机械设计与智能制造国际会议(MDSM2024)

第四届机械设计与智能制造国际会议(MDSM2024) 4th International Conference on Mechanical Design and Smart Manufacturing 会议日期:2024年8月23-25日 会议地点:中国-武汉 会议官网:https://www.iaast.cn/meet/home/Bx118v7D 【支持单位】…

Java版商城:Spring Cloud+SpringBoot b2b2c实现多商家入驻、直播带货及免费小程序商城搭建

用技术: Spring CloudSpring BootMybatis微服务服务监控可视化运营 B2B2C平台: 平台管理端(包含自营) 商家平台端(多商户入驻) PC买家端、手机wap/公众号买家端 微服务(30个通用微服务如:商品、订单、购物车、个人中心、支付…

C语言结构体包含结构体

C语言结构体可以包含另一个结构体; 下面通过一个例子看一下; struct Date {int day;int month;int year; };struct Person {char *name;struct Date birthday; }; ...... void CTestView::OnDraw(CDC* pDC) {CTestDoc* pDoc GetDocument();ASSERT_VAL…

.NET也能玩量化【2】搭建本地财经数据获取服务,以及获取复权历史大A数据演示...

直接动手,不写前言了。 创建.NET 8的一个webapi项目备用 本地安装python库 aktools 输安装完毕以后,输入 python -m aktools 即可启动有关服务 启动以后,主页地址:http://127.0.0.1:8080/ 查看swwager的api文档说明。我们主要使用…

Unity面试题 UGUI调整UI与粒子特效的显示层级

首先,必须保证Canvas画布的渲染模式为了相机渲染 方法:一:将需要控制UI显示层级的Image换成Sprite 1.创建一个粒子系统,和两张Sprite. 2.设置Sprite1的Order in Layer为 -1,设置Sprite2的Order in Layer为 1,粒子的Ord…

ANSYS Electronics 电磁场仿真工具下载安装,ANSYS Electronics强大的功能和灵活性

ANSYS Electronics无疑是一款在电磁场仿真领域表现卓越的软件工具。它凭借强大的功能和灵活性,帮助用户在产品设计阶段就能精确预测和优化电磁场性能,从而极大地降低了实际测试成本,并显著提升了产品的可靠性。 这款软件不仅在电子设计领域有…