欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Js对象操作之属性访问篇

程序员文章站 2022-07-15 22:12:45
...

前提说明:本篇为自学随记,可供JS自学者查看。

<!doctype html>
<html>
 <head>
  <title>Document</title>
 </head>
 <body>
    <script type="text/javascript">

	   //ECMAScript 5中新增加的4个访问对象属性的函数:
	   //Object.getPrototypeOf(object);  返回指定对象的原型
	   //Object.getOwnPropertyDescriptor(object,propertyname);  获取指定对象的私有属性的描述符
	   //Object.getOwnPropertyNames(object);  返回指定对象私有属性(直接对该对象定义的属性,而不是从该对象原型继承的属性)的名称数组,包括了可枚举和不可枚举的属性和方法
	   //Object.keys(object);  仅可返回指定对象可枚举属性和方法名称

	   //Object.getPrototypeOf
	   function Pasta(grain,width)
	   {
		   this.grain=grain;
		   this.width=width;
	   }

	   var spaghetti=new Pasta("wheat",0.2);
	   var proto=Object.getPrototypeOf(spaghetti);
	   document.write(proto===Pasta.prototype);
	   document.write("</br>");

	   //Object.getOwnPropertyNames
	   function Pasta1(x,y,z)
	   {
		   this.x=x;
		   this.y=y;
		   this.z=z;
		   this.toAdd=function()
		   {
			   return this.x+this.y+this.z;
		   }
	   }

	   var obj =new Pasta1(1,2,3);
	   var arr=Object.getOwnPropertyNames(obj);
	   document.write(arr+"</br>");

	   //Object.keys
	   var obj2={};
	   Object.defineProperty(obj2,"toAdd",{
		   value:100,
		   writable:true,
		   enumerable:false,  //将对象的属性toAdd的属性描述改为不可枚举时,通过Object.keys不可获取到该属性名称
		   configurable:true
	   });
	   obj2.x=1;
	   obj2.y=2;
	   document.write(Object.keys(obj2)+"</br>");

	   //Object.getOwnPropertyDescriptor 注意:该函数返回的是属性的描述符,而非属性描述数组
	   var descrip=Object.getOwnPropertyDescriptor(obj2,"toAdd");  //通过数组储存其返回的属性描述符,然后通过for/in语句遍历
	   for (i in  descrip) 
	   {
		   document.write(descrip[i]+"&nbsp;");
	   }
	   
	</script>

 </body>
</html>

 

相关标签: JS属性访问