数据属性:

数据属性包含一个数据值的位置,在这个位置可以读取和写入值。

4个描述的行为特性:

writable  表示能否修改属性的值。默认为true

Enumerable 表示能否过过for in循环返回属性是否可以枚举。

configuralbe 表示是否能过来delete删除属性从来重新定义属性,能否修改其配置。

value 包含这个属性的数据值。读取属性值的时候,从这个位置读取。

        写入属性值的时候,把新值保存在这个位置。这个特性的默认值为true。

 <script>
function Foo(){}
Foo.prototype.z = 3
var obj = new Foo()
obj.x = 1
alert("x" in obj) //=>true x是obj对象的自有属性
alert("z" in obj) //=>true z是obj原型上继承来看属性
//hasOwnProperty 必须是对象上的自有的属性才返回true
alert(obj.hasOwnProperty("x")) //true x是obj对象上的自有属性
alert(obj.hasOwnProperty("z")) //false z是obj原型上继承来的属性,不是他的私有属性
alert(Foo.prototype.hasOwnProperty("z")) //=>true z是原型上自有的属性,所以返回true
alert(Object.prototype.hasOwnProperty("toString"))//=>toString 是顶级对象上的自有属性,所以返回true
//prpertyisEnumeralbe 的意思是必是对象上的自有属性而且要以是枚举的,但是对象的可枚举属性Enumeralbe是true,才能返回true
alert(obj.propertyIsEnumerable("x")) //true x是obj对象上可枚举的属性
alert(obj.propertyIsEnumerable("z")) //false z是obj原型上的属性,不是自有属性,则不可以枚举
alert(Foo.prototype.propertyIsEnumerable("z")) //true x是原型上的自有属性,所以可以枚举
</script>

如何枚举属性,枚举属性对于原型又有什么区别?

演示代码如下:

 <script>
function Foo(){}
Foo.prototype.age = 22
var obj = new Foo()
obj.name = "ziksang"
obj.addr = "上海"
obj.telephone = 15921848427
for(var p in obj){ //使用FOR IN 可以枚举出自身的属性和原型上的属性
console.log(p)
}
console.log(Object.keys(obj)) //使用Object.keys(obj)只可以枚举Obj对象上自身的属性
console.log(Object.getOwnPropertyNames(obj)) //Object.getOwnPropertyNames(obj)是列出Ojb对象上自身的属性名,与枚举不相关,但是又类似枚举,大家要注意区分 </script>

js 中对象属性的特性的更多相关文章

  1. js中对象的一些特性,JSON,scroll家族

    一.js中对象的一些特性 对象的动态特性 1.当对象有这个属性时,会对属性的值重写 2.当对象没有这个属性时,会为对象创建一个新属性,并赋值 获得对象的属性的方式 为元素设置DOM0级事件 二.JSO ...

  2. js 中对象属性特性的描述

    如何自定义属性的特性? 用对象.属性的特性和自定义的属性的特性有什么区别? 它的四大特性 writable   enumerable   configable   有什么区别? 先预习一个用对象.属性 ...

  3. js 中对象--属性相关操作

    查询属性: 可以用 对象.属性 来查询属性和属性方法               或者                    对象[“属性”]  来查询属性和属性方法 演示代码: <script ...

  4. js 中对象属性特性2

    对象的存储描述: get   和   set 方法 <script> var obj ={ get age(){ return 22 }, set age(value){ console. ...

  5. 深入理解JavaScript中的属性和特性

    深入理解JavaScript中的属性和特性 JavaScript中属性和特性是完全不同的两个概念,这里我将根据自己所学,来深入理解JavaScript中的属性和特性. 主要内容如下: 理解JavaSc ...

  6. JavaScript之面向对象的概念,对象属性和对象属性的特性简介

    一.大家都知道,面向对象语言有一个标志,那就是他们都有类的概念,通过类我们可以创建任意多个具有相同属性和方法的对象.但ECMAScript(指定JavaScript标准的机构,也就是说JavaScri ...

  7. 【转载】js中对象的使用

    原文链接:http://www.jb51.net/article/90256.htm[侵删] 简单记录javascript中对象的使用 一.创建对象 //创建一个空对象 var o={}; //创建一 ...

  8. [转]JS中对象与字符串的互相转换

    原文地址:http://www.cnblogs.com/luminji/p/3617160.html 在使用 JSON2.JS 文件的 JSON.parse(data) 方法时候,碰到了问题: thr ...

  9. JS中对象与字符串的互相转换

    在使用 JSON2.JS 文件的 JSON.parse(data) 方法时候,碰到了问题: throw new SyntaxError('JSON.parse'); 查询资料,大概意思如下: JSON ...

随机推荐

  1. UVA 10557 XYZZY

    Problem D: XYZZY ADVENT: /ad�vent/, n. The prototypical computer adventure game, first designed by W ...

  2. Jetty容器集群配置Session存储到MySQL、MongoDB

    在Web开发中,Session表示HTTP服务器与客户端(例如浏览器)的"会话",每个客户端会有其对应的Session保存在服务器端,通常用来保存和客户端关联的一些信息,例如是否登 ...

  3. final效率分析

    1. 被final修饰的类 public final class FinalClass { public void getJava() { String str1 = "Java " ...

  4. [Javascript] IIFE

    Javascript modules are a design pattern that allow you to encapsulate your code into smaller self ma ...

  5. activity-intent-startActivity-startActivityResult

    一. Intent和startActivity 1.在一个Activtiy中可以使用startActivity()去开始另一个制定的Activity 但在android3.0(是针对平板出的产品)之后 ...

  6. CentOS 7.2 修改主机名

    1.临时修改主机名 hostname 主机名 重新连接shell,就可以,这种方式,只能修改临时的主机名,当重启机器后,主机名称又变回来了. 2.永久修改主机名 hostnamectl set-hos ...

  7. iOS CoreData (1)

    下面开始学习一下CoreData. Core Data不是一个关系型数据库,也不是关系型数据库管理系统(RDBMS). Core Data 为数据变更管理.对象存储.对象读取恢复的功能提供了支持. 它 ...

  8. android中的样式和主题

    有的时候我们一个页面要用很多个textview,而且这些textview的样式非常相像,这种情况下我们可以把这些样式抽取出来,然后在每个textview中引用即可,这样修改起来也方便. 我们来看一个简 ...

  9. JDK8新特性之接口

    在JDK7及以前的版本中,接口中都是抽象方法,不能定义方法体,但是从jdk8开始,接口中可以定义静态的非抽象的方法,直接使用接口名调用静态方法,但是它的实现类的类名或者实例却不可以调用接口中的静态方法 ...

  10. javascript split() 正则表达式

    路由匹配 http.createServer(function(req, res) { var items = req.url.split('/'); if (items.length < 3 ...