• js 属性类型之数据属性


    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    	</head>
    	<body>
    		<script type="text/javascript">
    			//对象的属性类型
    			//对象分为数据属性和访问器属性
    			//1、数据属性:[[Configurable]]、[[Enumerable]]、[[Writable]]、[[Value]]
    			//	Configurable是否可以通过delete删除属性
    			//	Enumerable可否for-in
    			//	Writable能否修改属性值
    			//	Value读取这个属性的数据值
    			
    			var person = {
    				name: "宝清老窖",
    			}
    			//创建一个person对象,该对象创建了一个名为name的属性,值为“宝清老窖”。
    			//也就是说,[[Value]]特性将被设置为“宝清老窖”
    			
    			//要修改属性默认的特性,必须使用ECMAScript5的Object.defineProperty()
    			//改方法包含三个参数,1、属相所在的对象;2、属性的名字;3一个描述符;
    			//其中描述符(descriptor)对象的属性必须是:configurable、enumerable、writable、value
    			var person = {};	//writable
    			Object.defineProperty(person , "name" , {
    				writable: false,
    				value: "宝清老窖"
    			});
    			alert(person.name);		//宝清老窖
    			person.name = "金宝清";
    			alert(person.name);		//宝清老窖
    			
    			var person2 = {};	//Configurable
    			Object.defineProperty(person2 , "name" , {
    				configurable: false,
    				value: "宝清老窖"
    			});
    			alert(person2.name);
    			delete person2.name;
    			alert(person2.name);
    			//当configurable为false的时候,不能用delete删除
    			//如果用delete删除,在非严格模式下什么都不会发生,在严格模式下会报错
    			
    			//一旦把configurable变为false就不能再变回true了,会报错
    			var person3 = {};
    			Object.defineProperty(person3 , "name" , {
    				configurable: false,
    				value: "宝清老窖"
    			});
    			Object.defineProperty(person3 , "name" , {
    				configurable: true,			//会报错
    				value: "宝清老窖"
    			});
    			//
    		</script>
    	</body>
    </html>
    

      提取出js部分

        //对象的属性类型
    			//对象分为数据属性和访问器属性
    			//1、数据属性:[[Configurable]]、[[Enumerable]]、[[Writable]]、[[Value]]
    			//	Configurable是否可以通过delete删除属性
    			//	Enumerable可否for-in
    			//	Writable能否修改属性值
    			//	Value读取这个属性的数据值
    			
    			var person = {
    				name: "宝清老窖",
    			}
    			//创建一个person对象,该对象创建了一个名为name的属性,值为“宝清老窖”。
    			//也就是说,[[Value]]特性将被设置为“宝清老窖”
    			
    			//要修改属性默认的特性,必须使用ECMAScript5的Object.defineProperty()
    			//改方法包含三个参数,1、属相所在的对象;2、属性的名字;3一个描述符;
    			//其中描述符(descriptor)对象的属性必须是:configurable、enumerable、writable、value
    			var person = {};	//writable
    			Object.defineProperty(person , "name" , {
    				writable: false,
    				value: "宝清老窖"
    			});
    			alert(person.name);		//宝清老窖
    			person.name = "金宝清";
    			alert(person.name);		//宝清老窖
    			
    			var person2 = {};	//Configurable
    			Object.defineProperty(person2 , "name" , {
    				configurable: false,
    				value: "宝清老窖"
    			});
    			alert(person2.name);
    			delete person2.name;
    			alert(person2.name);
    			//当configurable为false的时候,不能用delete删除
    			//如果用delete删除,在非严格模式下什么都不会发生,在严格模式下会报错
    			
    			//一旦把configurable变为false就不能再变回true了,会报错
    			var person3 = {};
    			Object.defineProperty(person3 , "name" , {
    				configurable: false,
    				value: "宝清老窖"
    			});
    			Object.defineProperty(person3 , "name" , {
    				configurable: true,			//会报错
    				value: "宝清老窖"
    			});
    			//            
    

      

  • 相关阅读:
    vue中实现后台管理路由标签页
    vue实现侧边导航栏
    node学习(-)
    javascript面试题(二)
    尾递归(简要)
    javascript面试题(一)
    Windows平台基于RTMP实现一对一互动直播
    如何实现RTMP推送Android Camera2数据
    Windows平台RTMP/RTSP直播推送模块设计和使用说明
    如何设计一款跨平台低延迟的RTMP/RTSP直播播放器
  • 原文地址:https://www.cnblogs.com/xudy/p/5417151.html
Copyright © 2020-2023  润新知