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

属性的特性:
     数据属性的特性(默认值是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. javascript/ajax和php 进阶 之 项目实战

    1,使用异步思想做一个下拉列表,能够选择和展示数据库中对应的信息. 1,事件知识:所有的事件可参照:https://www.jb51.net/html5/459444.html 2,js中this补充 ...

  2. quartz定时任务的简单使用

    开发环境: springmvc quartz-2.2.3在官网下载的. 步骤: 1.首先在web.xml中加入以下代码: <servlet> <servlet-name>Qua ...

  3. 安装mysql8.0.12以及修改密码和Navicat的连接

    mysql8.0+与安装其他版本不同一.安装mysql8.0.121.到官网https://www.mysql.com/  下载mysql-8.0.12-winx64.zip(不要.mis),直接解压 ...

  4. CF1097F Alex and a TV Show

    题目地址:CF1097F Alex and a TV Show bitset+莫比乌斯反演(个人第一道莫比乌斯反演题) 由于只关心出现次数的奇偶性,显然用bitset最合适 但我们并不直接在bitse ...

  5. office 产品密钥

    刚买的小新,配置下office,作为技术人员,喜欢Share以下 office 产品密钥,任你选一组 一.序列号激活法(密钥激活法)这种是最为安全而且最为正规的方法,通过取得合法的序列号(密钥)进行激 ...

  6. 算法:60.第k个排列

    解答参考:https://blog.csdn.net/lqcsp/article/details/23322951 题目链接:https://leetcode-cn.com/problems/perm ...

  7. MongoDB 和 NoSQL简介

    MongoDB 是一个基于分布式文件存储的数据库( https://www.mongodb.com/ ).由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案.MongoDB ...

  8. window10 matlabR2015b 安装minGw

    第一步:下载TDM-GCC(注意看清是32位还是64位),TDM-GCC的安装路径不要包括空格: http://tdm-gcc.tdragon.net/download 第二步:点击“我的电脑”右键“ ...

  9. JS的Ajax和同源策略

    JS实现的ajax AJAX核心(XMLHttpRequest) 其实AJAX就是在Javascript中多添加了一个对象:XMLHttpRequest对象.所有的异步交互都是使用XMLHttpSer ...

  10. SharePoint 2013 SqlException (0x80131904):找不到Windows NT 用户或组xxxx\administrator

    过程描述: 在SharePoint 2013里配置创建搜索服务应用程序时报错: 配置 Search Service 应用程序期间遇到错误. System.Data.SqlClient.SqlExcep ...