JavaScript学习随记——属性类型

<!DOCTYPE HTML>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>属性类型</title></head>		<body><script type="text/javascript" charset="utf-8">/*** ECMAScript 中有两种属性:数据属性和访问器属性。* * 要修改属性默认的特性,必须使用ECMAScript5的Object.defineProperty()方法。* 语法:Object.defineProperty(属性所在的对象,属性名字,描述符对象);* 注意:描述符对象的属性必须是:configurable、enumerable、writable 和 value 。* * 描述符对象属性:* 		configurable:[true|false]表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性。* 		enumerable:[true|false]表示能否通过 for-in 循环返回属性。* 		writable:[true|false]表示能否修改属性的值。* 		value:包含这个属性的数据值,读取属性值得时候,从这个位置读;写入属性值得时候,把新值保存在这个位置。这个特性的默认值为undefined。*/var person = {};//定义属性特性Object.defineProperty(person,"name",{writable:false,	//不可写value:"张三"		//属性的值为"张三"});console.log(person.name);	person.name = "李四";console.log("新赋值后:"+person.name);/********************* 【开始】运行结果 ********************张三新赋值后:张三********************* 【结束】运行结果 ********************/	
</script>		<script type="text/javascript" charset="utf-8">var person1 = {};//定义属性特性//注: 一旦把属性定义为不可配置,就不能再把它变回可配置了,此时,再调用 Object.defineProperty() 方法修改除 writable 之外的特性,都会导致错误。Object.defineProperty(person1,"name",{configurable:false,	//不能从对象中删除属性value:"张三1"		//属性的值为"张三1"});console.log(person1.name);	delete person.name;console.log("删除属性后:"+person1.name);//从定义属性特性(运行时报错)Object.defineProperty(person1,"name",{configurable:true,	//可以从对象中删除属性value:"张三2"		//属性的值为"张三2"});console.log("从定义属性特性后:"+person1.name);/********************* 【开始】运行结果 ********************张三1删除属性后:张三1TypeError: can't redefine non-configurable property "name"Object.defineProperty(person1,"name",{********************* 【结束】运行结果 ********************/		
</script>	<script type="text/javascript" charset="utf-8">/*** 访问器属性*/var book = {_year:2004,edition:1};//定义访问器属性/*** 访问器属性有如下4个特性。* configurable:[true|false]表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为数据属性。* enumerable:[true|false]表示能否通过 for-in 循环返回属性。* get:在读取属性是调用的函数,默认值为 undefined。* set:在写入属性是调用的函数,默认值为 undefined。* */Object.defineProperty(book,"year",{get:function(){return this._year;},set:function(val){if(val > 2000){this._year = val;this.edition = val - 2000;}}});book.year = 2005;console.log(book);console.log(book.year);console.log(book.edition);/********************* 【开始】运行结果 ********************Object { _year=2005,  edition=5}20055********************* 【结束】运行结果 ********************/	
</script><script type="text/javascript" charset="utf-8">/*** 定义多个属性Object.defineProperties()方法。* 语法:Object.defineProperties(添加和修改其属性的对象,对象的属性);*/var book1 = {};Object.defineProperties(book1,{//数据属性_year:{writable:true,	// 不写的话默认为 falsevalue:2000},//数据属性edition:{writable:true,value:0},//访问器属性year:{get:function(){return this._year;},set:function(newVal){if(newVal > this._year){this.edition += (newVal - this._year)*2;this._year = newVal;}}}});book1.year = 2005;console.log("year:"+book1.year+",edition:"+book1.edition);book1.year = 2007;console.log("year:"+book1.year+",edition:"+book1.edition);//读取属性的特性var descriptor = Object.getOwnPropertyDescriptor(book1,"_year");console.log(descriptor.value);			//2007console.log(descriptor.configurable);	//falseconsole.log(typeof(descriptor.get));	//undefinedvar descriptor = Object.getOwnPropertyDescriptor(book1,"year");console.log(descriptor.value);			//undefinedconsole.log(descriptor.configurable);	//falseconsole.log(typeof(descriptor.get));	//function/********************* 【开始】运行结果 ********************year:2005,edition:10year:2007,edition:142007falseundefinedundefinedfalsefunction********************* 【结束】运行结果 ********************/	
</script>			</body>
</html>

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

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

相关文章

Shell if else语句

if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。Shell 有三种 if ... else 语句&#xff1a; if ... fi 语句&#xff1b;if ... else ... fi 语句&#xff1b;if ... elif ... else ... fi 语句。1) if ... else 语句 if ... else 语句的语法&#xff1a; if [ ex…

过滤日志中不相关的堆栈跟踪行

我喜欢堆栈痕迹。 不是因为我喜欢错误&#xff0c;而是因为发生错误的那一刻&#xff0c;堆栈跟踪是无价的信息源。 例如&#xff0c;在Web应用程序中&#xff0c;堆栈跟踪向您显示完整的请求处理路径&#xff0c;从HTTP套接字到过滤器&#xff0c;Servlet&#xff0c;控制器&a…

Can't create/write to file '/tmp/#sql_887d_0.MYD' (Errcode: 17)

lsof |grep "#sql_887d_0.MYD" 如果没有被占用就可以删掉 。 https://wordpress.org/support/topic/cant-createwrite-to-file-error Hello, just today I saw this kind of error on every page on my blog. WordPress database error: [Cant create/write to file …

python3怎么创建文件_Python3.5 创建文件的简单实例

实例如下所示&#xff1a;#codingutf-8Created on 2012-5-29author: xiaochouimport osimport timedef nsfile(s):The number of new expected documents#判断文件夹是否存在&#xff0c;如果不存在则创建b os.path.exists("E:\\testFile\\")if b:print("File …

Dijkstra 最短路算法(只能计算出一条最短路径,所有路径用dfs)

上周我们介绍了神奇的只有五行的 Floyd 最短路算法&#xff0c;它可以方便的求得任意两点的最短路径&#xff0c;这称为“多源最短路”。本周来来介绍指定一个点&#xff08;源点&#xff09;到其余各个顶点的最短路径&#xff0c;也叫做“单源最短路径”。例如求下图中的 1 号…

JavaScript学习随记——错误类型

错误类型&#xff1a; 执行代码期间可能会发生的错误有多种类型。每种错误都有对应的错误类型&#xff0c;而当错误发生时&#xff0c;就会抛出相应类型的错误对象。 ECMA-262定义的7种错误类型 Error&#xff1a; 是错误的基类型&#xff0c;其他错误类型都继承该类型。Error…

多个集合中的共同和独特元素

本周&#xff0c;我们将暂时中断较高级别的问题和技术文章&#xff0c;以解决我们中许多人可能面临的一些代码问题。 没什么花哨的或太辛苦的&#xff0c;但是有一天它可能会节省您15分钟的时间&#xff0c;偶尔回到基础上也很不错。 因此&#xff0c;让我们开始吧。 有时&…

2016给自己一个交代

一、前言 在关于技术上的学习&#xff0c;常常有这样那样的计划&#xff0c;而最终一个都没有真正的落实。零散的学习&#xff0c;终究需要系统总结&#xff0c;才能使自己有所沉淀。从毕业至今&#xff0c;我一直在忙碌&#xff0c;为公司付出自己的很多很多&#xff0c;却只不…

洛克人红色思考型机器人叫什么_稻船敬二新企划《红色灰烬》 依然是机器人风格...

稻船敬二离开CAPCOM之后玩家们纷纷感叹《洛克人》系列将再无续作&#xff0c;不过在单飞的这段时间里&#xff0c;稻船敬二还是创作了诸如《苍蓝雷霆 刚巴尔特》《Mighty No.9》等类似洛克人风格的作品。其名下的团队comcept的最新作《Mighty No.9》即将于9月18日发售&#xff…

常见对话框

(1)普通对话框 // 点击按钮 弹出一个普通对话框public void click1(View v) {// 构建AlertDialogAlertDialog.Builder builder new Builder(this);builder.setTitle("警告");builder.setMessage("世界上最遥远的距离是没有网络");builder.setPositiveButt…

JavaScript学习随记——面向对象编程(继承)

Example:基于原型链的继承 <!DOCTYPE HTML> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>面向对象编程&#xff08;OOP&#xff09;</title></head> <body>…

NSCharacterSet

先上个例子&#xff1a; NSString * str1 [nameInput.textstringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]]; NSString * str2 [passwdInput.textstringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]]; […

Apache Mahout:构建垃圾邮件过滤器服务器

Lucene发生了一些相当有趣的事情。 它最初是作为一个库&#xff0c;然后其开发人员开始基于它添加新项目。 他们开发了另一个开源项目&#xff0c;该项目将向Lucene添加爬网功能&#xff08;以及其他功能&#xff09;。 Nutch实际上是任何人都可以使用或修改的功能齐全的Web Se…

建模步骤_古建设计 | sketchup建模步骤教程(简易入门版)

前言本篇教程主要是针对古建建模入门者。小N给大家分享一套我相对简易的建模步骤。(PS&#xff1a;但是估计有些人可能会感觉我做的东西已经繁琐了……)因为主要是为了让大家熟悉、入门和好记忆。所以讲的东西&#xff0c;小N我会相对简单&#xff0c;有些细节的内容不会更多展…

JavaScript模块化

JavaScript模块化的实现方式&#xff1a; <!DOCTYPE HTML> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>模块化</title></head> <body><script type&quo…

Linux下面的IO模型

1. Linux下的五种I/O模型 阻塞I/O模型&#xff1a; 一直阻塞 应用程序调用一个IO函数&#xff0c;导致应用程序阻塞&#xff0c;等待数据准备好。 如果数据没有准备好&#xff0c;一直等待….数据准备好了&#xff0c;从内核拷贝到用户空间,IO函数返回成功指示。 我们 第一…

改变导航栏上边的状态栏颜色

#pragma mark - 改变状态栏颜色 -(UIStatusBarStyle)preferredStatusBarStyle{ return UIStatusBarStyleLightContent; }转载于:https://www.cnblogs.com/block123/p/5195203.html

PIT和TestNG突变测试简介

变异测试是一种技术&#xff0c;它可以发现测试未涵盖代码的哪些部分。 它类似于代码覆盖范围 &#xff0c;但变异测试不限于在测试期间执行给定行的事实。 这个想法是修改生产代码&#xff08;引入突变&#xff09;&#xff0c;这应该改变其行为&#xff08;产生不同的结果&am…

JavaScript内存管理——优化内存占用

使用具备垃圾收集机制的语言编写程序&#xff0c;开发人员一般不必操心内存管理的问题。但是&#xff0c;JavaScript在进行内存管理及垃圾收集时面临的问题还是有点与众不同。其中最主要的一个问题&#xff0c;就是分配给Web浏览器的可用内存数量通常要比分配给桌面应用程序的少…

Java 8的烹调方式– Lambda项目

什么是project lambda &#xff1a;Project lambda是用于以Java语言语法启用lambda表达式的项目。 Lambda表达式是功能编程语言&#xff08;如lisp&#xff09;中的主要语法。 Groovy将是支持lambda表达式&#xff08;也称为闭包&#xff09;的java的最接近亲戚。 那么什么是la…