JavaScript的检测属性、属性特性、枚举属性
/*
检测属性
检测属性可以通过三种方式
1.通过in运算符
2.通过hasOwnPerperty() 如果给定的属性是继承属性将返回false
3.通过propertyIsEnumerable():只有检测到的自有属性且这个属性的可枚举性为true时它才返回true,某些内置对象是不可枚举的,通常由JavaScript代码创建的对象的属性是可枚举的。
*/ var o = { x: 1}; "x" in o.x; //true
"y" in o.x; //false
"toString" in o.x //true o继承toString 属性 o.hasOwnProperty("x"); //true
o.hasOwnProperty("y"); //false
o.hasOwnProperty("toString") //false:toString是继承来的属性 o.propertyisEnumerable("x"); //true
o.propertyisEnumerable("y"); //false
Object.prototype.propertyIsEnumerable("toString"); //false //除了使用in运算符之外,别一种更简便的方法是使用“!==”判断一个属性是否是undefined o.x !== undefined; //true
o.y !== undefined; //false
o.toString !== undefined; //true /*
枚举属性:
for/in循环可以在循环中遍历对象中所有可枚举属性(自有属性和继承属性),属性名称赋值给循环变量。对象继承内置方法不可枚举,但在代码中给对象添加的属性都是可枚举的
*/ /*
属性特性
数据属性的四个特性:值(value)、可写性(writable)、可枚举性(enumerable)、可配置性(configurable).
存取器属性的四个特性:取(get) 、 写入(set)、可枚举性和可配置性 为了实现属性的查询和设置操作,ECMAScript5中定义了一个名字为"属性描述符"
数据属性描述符:value writrable enumerable configurable 通过调用Object.getOwnPropertyDescription()(只能得到自有属性的描述符)可以获得某个对象特定属性的属性描述符: //返回 {value: 1, writrable:true, enumerable:true, configuration:true}
Object.getOwnPropertyDescrition({x:1}, "x"); 对于继承属性和不存在的属性:返回undefined 要想设置属性的特性,歌者想让新建属性具有某种特性,则需要调用Object.definProperty(),传入要修改的对象、要创建或修改的属性的名称以及属性描述符对象; Object.definProperty(o, "x", {x:1, writable: true, enumerable: false, configurable: true}); 如果要同时修改或创建多个属性,则需要使用Object.defineproperties(),第一个参数是要修改的对象,第二个参数是一个映射表,它包含要新建或修改的属性的名称,以及它们的属性描述符,如: var p = Object.defineProperties({},{
x: {x:1, writable: true, enumerable: false, configurable: true},
y: {x:1, writable: true, enumerable: false, configurable: true},
r: {
get: function() {return Math.sqrt(this.x*this.x + this.y*this.y) },
enumerable: true,
configrable: true
}
});
*/
JavaScript的检测属性、属性特性、枚举属性的更多相关文章
- JavaScript类型检测, typeof操作符与constructor属性的异同
*#type.js function Person(name, age) { this.name = name; this.age = age; } var d = {an: 'object'}; v ...
- javascript中对象的属性的特性
1.ES5的属性特性包括下面六个: configurable: 表示能否通过delete来删除属性从而重新定义属性,能够修改属性的特性,默认为true enumberable: 表示是否能通过for- ...
- 你必须知道的.NET之特性和属性(转)
1. 引言 attribute是.NET框架引入的有一技术亮点,因此我们有必要花点时间走进一个发现attribute登堂入室的入口.因为.NET Framework中使用了大量的定制特性来完成代码约定 ...
- .NET之特性和属性
1. 引言 attribute是.NET框架引入的有一技术亮点,因此我们有必要花点时间走进一个发现attribute登堂入室的入口.因为.NET Framework中使用了大量的定制特性来完成代码约定 ...
- .NET之特性和属性(转)
1. 引言 attribute是.NET框架引入的有一技术亮点,因此我们有必要花点时间走进一个发现attribute登堂入室的入口.因为.NET Framework中使用了大量的定制特性来完成代码约定 ...
- js 对象可枚举属性以及for in 循环和for of 循环
js中每个对象的属性(js里万物皆属性,对象的属性也是对象)都有一个属性叫enumerable(可枚举性),这个属性true/false决定了该对象的属性是否可枚举(就是让一些方法访问到这个属性). ...
- 深入理解枚举属性与for-in和for-of
首先要分清什么是可枚举属性,什么是不可枚举属性 1.可枚举属性 在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的.可枚举性决定了这个属性能否被f ...
- javaScript 工作必知(八) 属性的特性 值、写、枚举、可配置
属性的特性 每个对象都拥有属性,属性具有哪些特性呢? 1.属性具有值. 2.属性是否是可写的. 3.是否是可枚举的. 4.是否是可配置的. " ...
- JavaScript 之 对象属性的特性 和defineProperty方法
对象是无序属性的集合,而这些属性在创建是都带有一些特征值(可以理解为属性的属性,天生自带的),这些特征值是为了实现JavaScript引擎用的,因此JavaScript不能直接访问. JavaScri ...
随机推荐
- Studio右键选项中没有Git?
从Git clone一个Project并打开后,都会习惯性的像使用Eclipse一样,选中工程右键,选择Git的对应版本控制选项. 如下图,你只看到了svn. 如何配置才能在右键选项中看到Git呢,我 ...
- JAVA 子父类的特点
一.变量(属性) this 代表当前对象的引用 this.变量 首先在本类中找所需要的这个变量,如果没有找到再去父类中找 super 用于访问当前对象的父类成员 super.变量 直接在父 ...
- Good Sentences
Wine in, truth out One is never too old to learn What is done can not be undone Time tries all thing ...
- 关于lib,dll,.a,.so,静态库和动态库的解释说明
[转]关于lib,dll,.a,.so,静态库和动态库的解释说明 目录 1 什么叫程序库 2 什么是lib,什么是dll,什么是.a,什么是so,什么是静态库,什么是动态库 3 补充说明 4 作者 什 ...
- 89、Android EditText 悬浮停靠
package com.willen.topFloatDemo; import android.content.Context; import android.os.Handler; import a ...
- 关于position的疑惑
我到现在也不是很清楚position的效果会是什么,或者是什么情况下需要指明为relatieve什么情况下又需要absolute呢? <div style="position:rela ...
- [SQL]SQL语言入门级教材_SQL功能与特性(一)
SQL功能与特性 其实,在前面的文章中,已经提及SQL命令的一些基本功能.然而,通过 SQL命令,程序设计师或数据库管理员(DBA)可以: (一)建立数据库的表格.(包括设置表格所可以使用之空间) ( ...
- elasticsearch开启脚本及使用
开启script: Scripting settingsedit The script.disable_dynamic node setting has been replaced by fine-g ...
- MS文件与路径的一些方法记录
一,路径相关 String path1 = System.IO.Directory.GetCurrentDirectory(); MessageBox.Show("获取应用程序的当前工作目录 ...
- php 深入理解addslashes函数
php addslashes函数对于很多人来说并不陌生,但很大部分人只是了解皮毛,只知道addslashes函数是在特定字符前面加上反斜杠,本文章将带大家深入理解php addslashes函数的使用 ...