属性:对象中可以保存数据的变量

属性的特性:
     数据属性的特性(默认值是false):value、writable(可写否) 、enumerable(可否枚举)、configurable(可否重新配置)

   访问器属性的特性:get、set、enumerable、configurable  使用该访问器的特性来设置每个数据的形式,可以更加精准的确定是否只读、只写或者可读可写

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>数据属性和访问器属性</title>
<script src="js/jquery.min.js"></script>
<script >
var employee = {
monSalary: 5000,
get yearSalary() {
alert(" get yearSalary()被调用!");
return this.monSalary * 12;
},
set yearSalary(value) {
this.monSalary = value / 12;
}
};
// alert(employee.yearSalary);
// employee.yearSalary = 12000;
// alert(employee.monSalary); var stu = {chinese:90};//为对象添加属性
stu.math=80; //为对象添加属性 for(var p in stu){//遍历输出
alert(p+'=>'+stu[p]);
}
//为对象添加一个新的数据属性 Object.defineProperty(
stu,
'english',
{
value:100,
writable:true,
enumerable:true,//可以枚举遍历出来:false就不枚举
configurable:true//怎么定义和后面的定义没有影响,不管定义为true还是false,后面再次定义都是可以生效的
}
); Object.defineProperty(
stu,
'english',
{
value:130,
writable:false,//默认值是false:因为在上面就定义为true,之后再想改为false是无法改变的
enumerable:false,//可以枚举遍历出来:false就不枚举
configurable:false//重新配置属性的特性:再次定义也会生效。
}
);
alert("english:"+stu.english);
//枚举对象中的每个属性
var arr=Object.keys(stu);
alert(arr.length);

使用属性的特性定义一个新的访问器属性(访问器属性的特性)


Object.defineProperty{
stu,
'total',//给stu添加一个属性total,且描述该属性的四个特性
{//属性的描述符对象--定义属性的特性
 get : function(){},
set : function(value){},
  enumerable : true,
  configurable : true
}
};

demo:正方形求面积和周长
  var square ={
__width:0,//没有使用数据属性。而是使用两个下划线的方式转化为访问器属性的方式来传递不同的值
get perimeter(){
return this.__width * 4;
},
set perimeter(value){
this.__width=value/4;
},
         writable:true,//可更改
         configurable:true//可重新配置
}; 给square对象添加size属性 切记:get 和 set 必须使用冒号,否则size输出的是undefined
Object.defineProperty(
square,
'size',
{
get:function(){
return this.__width * this.__width;
},
set:function(value){
this.__width=Math.sqrt(value);
},
enumerable:true,//可枚举
configurable:true//可重新配置
}
);
square.__width=10;
alert("周长是:"+square.perimeter);
alert("面积是:"+square.size);

    </script>
</head>
<body></body>
</html>

属性(property)的特性(attribute)的更多相关文章

  1. 如何获取类或属性的自定义特性(Attribute)

    如何获取类或属性的自定义特性(Attribute) 问题说明: 在ActiveRecord或者其他的ORM等代码中, 我们经常可以看到自定义特性(Attribute)的存在(如下面的代码所示) [Pr ...

  2. 区分元素特性attribute和对象属性property

    × 目录 [1]定义 [2]共有 [3]例外[4]特殊[5]自定义[6]混淆[7]总结 前面的话 其实attribute和property两个单词,翻译出来都是属性,但是<javascript高 ...

  3. 理解特性attribute 和 属性property的区别 及相关DOM操作总结

    查一下英语单词解释,两个都可以表示属性.但attribute倾向于解释为特质,而property倾向于解释私有的.这个property的私有解释可以更方便我们下面的理解. 第一部分:区别点 第一点:  ...

  4. [C#] C# 知识回顾 - 特性 Attribute

    C# 知识回顾 - 特性 Attribute [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5911289.html 目录 特性简介 使用特性 特性 ...

  5. .Net内置特性Attribute介绍

    特性Attribute概述 特性(Attribute)是一种特殊的类型,可以加载到程序集或者程序集的类型上,这些类型包括模块.类.接口.结构.构造函数.方法.字段等,加载了特性的类型称之为特性的目标. ...

  6. day26 python学习 对象的接口,封装,私用属性 property

    # 抽象类和接口类 #** #不崇尚接口类 #python本身支持多继承,没有接口专用的语法.但是我知道接口的概念 # 接口类:# 是规范子类的一个模板,只要接口类中定义的,就应该在子类中实现# 接口 ...

  7. C#中的特性 (Attribute) 入门 (一)

    C#中的特性 (Attribute) 入门 (一) 饮水思源 http://www.cnblogs.com/Wind-Eagle/archive/2008/12/10/1351746.html htt ...

  8. C# 自定义特性Attribute

    一.特性Attribute和注释有什么区别 特性Attribute A:就是一个类,直接继承/间接继承Attribute B:特性可以在后期反射中处理,特性本身是没有什么*用的 C:特性会影响编译和运 ...

  9. 特性attribute,声明和使用attribute,应用attribute,AOP面向切面,多种方式实现AOP

    1 特性attribute,和注释有什么区别2 声明和使用attribute3 应用attribute4 AOP面向切面5 多种方式实现AOP ---------------------------- ...

  10. 分析Runtime的属性Property

    一.介绍 在OC中我们可以给任意的一个类以@property的格式声明属性,当然对于这个属性也会采用某一些属性关键字进行修饰,那么属性的真正的面目是啥样子的呢?其实,runtime源码中可以看到,pr ...

随机推荐

  1. Django学习手册 - csrf

    CSRF csrf原理 无csrf时存在隐患 Form提交 Ajax提交 默认为全局都csrf Form表单提交方式: <div> <form action="/login ...

  2. Django学习手册 - ORM 单表数据获取

    Django 单表数据的获取: 先建立数据表格 from django.db import models # Create your models here. class userinfo(model ...

  3. 码云IntelliJ IDEA

    将项目从码云clone到IntelliJ IDEA https://blog.csdn.net/wust_lh/article/details/68068176 用IDEA上传本地项目到码云/Gith ...

  4. docker部署Javaweb环境数据库连接问题

    最近在docker部署了一个Javaweb项目运行的环境,在容器中部署了mysql和Javaweb项目,但是本地可以跑项目,放到容器里面不行. 具体报错内容是不能访问数据库. Could not ge ...

  5. Xilinx原语学习之时钟资源相关原语

    一直来,都是使用Vivado中自带的GMIItoRGMII IP核来完成GMII转RGMII的功能:尽管对GMII及RGMII协议都有一定的了解,但从没用代码实现过其功能.由于使用IP时,会涉及到MD ...

  6. Ubuntu的内核转储工具【转】

    转自:http://www.cnblogs.com/wwang/archive/2010/11/19/1881304.html 在我的上一篇博文<Linux内核的Oops>的最后介绍到一个 ...

  7. 设计模式C++学习笔记之十四(Iterator迭代器模式)

      14.1.解释 概念:提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示. main(),客户 IProject,产品接口 CProject,产品类 IIterator,迭代 ...

  8. python用类装饰函数的一个有趣实现

    class RunningLog: def __init__(self,func): self._func=func self._func_name = func.__name__ def __cal ...

  9. Linux中OCI开发库的配置

    Oracle调用接口(Oracle Call Interface,简称OCI)提供了一组可对Oracle数据库进行存取的接口子例程(函数),通过在第三代程序设计语言(如C语言)中进行调用可达到存取Or ...

  10. 装机uefi问题

    1 uefi不支持普通winpe启动,需要改为legacy 2 七代酷睿不支持win10以下版本 3 装机后无法启动是因为隐藏分区问题,删除掉,最好整个硬盘格式化 4 老毛桃一键装机不可以时,改为虚拟 ...