JS-OO-数据属性,访问器属性】的更多相关文章

嗯,之前在读js红宝书的时候,在对象那一章有介绍属性类型.第一种数据类型指的是数据属性,第二种是访问器属性.在初识vue的时候,其双向数据绑定也是基于访问器属性中的getter和setter函数原理来实现的.本篇文章就着重解析这两个函数的工作原理. 首先,我们先创建一个a对象,并给他定义了一个默认的属性_b,_b前面的下划线是一种常用的记号,用于表示只能通过对象方法访问的属性. var a={ _b=5;}; 接着定义一个属性为'c'的访问器属性,该属性包含一个get和set函数,get函数用来…
ECMA-2把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.” 严格来说,这就相当于说对象是一组没有特定顺序的值.对象的属性或方法都有一个名字,而每个名字映射到一个值.我们可以把ECMAScript的对象想象成散列表,无非就是一组名值对,其中值可以是数据或函数.(高程三 P139) [译]JavaScript中对象的属性   <高程三 P139 属性类型> JavaScript笔记--数据属性和访问器属性 JavaScript中有两种不同类型的属性:命名数据属性(named…
ECMA-262第5版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征.ECMA-262定义这些特性是为了实现javascript引擎用的,因此在javascript中不能直接访问它们.为了表示特性时内部值,该规范把它们放在了两对方括号中,例如[[Enumerable]]. 数据属性 数据属性包含一个数据值的位置,在这个位置可以读取和写入值.数据属性有4个描述其行为的特性 类别 Value 包含这个属性的数据值.读取属性值的时候,从这个位置读取,写入值得…
Js中的数据属性和访问器属性 在javaScript中,对象的属性分为两种类型:数据属性和访问器属性. 一.数据属性 1.数据属性:它包含的是一个数据值的位置,在这可以对数据值进行读写. 2.数据属性包含四个特性,分别是: configurable:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或能否把属性修改为访问器属性,默认为true enumerable:表示能否通过for-in循环返回属性 writable:表示能否修改属性的值 value:包含该属性的数据值.默…
js中属性类型分为两种:数据属性和访问器属性 在js中,对象都是由名值对构成的,名:就是我们所说的属性名,值就是属性对应的值(基本值.对象.方法). ECMA-262第5版定义了只有内部才用的特性,描述了属性的各种特征,比如,这个属性能否被删除.能否被枚举.能否被修改.以及读取属性的值. 这些特性是为了实现JavaScript引擎用的,因此在JavaScript中不能直接访问他们. 1.先来说一下数据属性 数据属性:包含一个数据值的位置.在这个位置可以读取和写入值.数据属性有4个描述其行为的特性…
js面向对象 ECMA-262第5版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征.ECMA-262定义这些特性是为了实现javascript引擎用的,因此在javascript中不能直接访问它们.为了表示特性时内部值,该规范把它们放在了两对方括号中,例如[[Enumerable]]. 1数据属性 数据属性包含一个数据值的位置,在这个位置可以读取和写入值.数据属性有4个描述其行为的特性 1.[[Configurable]]:表示能否通过delete删除…
数据属性:该属性包含了一个数据值的位置,它包含了4个描述行为的特性:1. [[Configurable]]:表示是否能通过delete删除属性从而重新定义属性,能否修改属性的特性,能否把属性修改为访问器属性.2. [[Enumerable]]:表示能否用for-in循环返回.3. [[writable]]:表示能否修改属性的值.4. [[Value]]:包含这个属性的数据值.读取属性值的时候从这个位置读,写入属性值的时候更新到这个位置,默认值为undefined. 直接在对象上定义的属性的数据特…
对JavaScript来说,属性并非只是简单的名称和值,JavaScript用一组特征(attribute)来描述属性 (property). 第一类属性数据属性具有四个特征. value:就是属性的值. writable:决定属性能否被赋值. enumerable:决定for in能否枚举该属性. configurable:决定该属性能否被删除或者改变特征值. 在大多数情况下,我们只关心数据属性的值即可. 第二类属性是访问器(getter/setter)属性,它也有四个特征. getter:函…
在JavaScript中对象被定义为"无序属性的集合,其属性可以包含基本值.对象或函数."通俗点讲,我们可以把对象理解为一组一组的名值对,其中值可以是数据或函数. 创建自定义对象通常有两种方法,第一种就是创建一个Object的实例,然后再为其添加属性和方法,例如: var person = new Object(); person.name = "Scott"; person.age = 24; person.sayName = function(){ alert(…
数据属性 数据属性包含一个数据值的位置.在这个位置可以读取和写入值.数据属性有 4 个描述其行为的特性. [[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性. [[Enumerable]]:表示能否通过 for-in 循环返回属性. [[Writable]]:表示能否修改属性的值. [[Value]]:包含这个属性的值.读取属性值的时候,从这个位置读:写入属性值的时候,把新值保存在这个位置.这个特性的默认值为…
简介 ECMAScript 定义的对象中有两种特殊的属性, 这两种特殊的属性在你定义对象属性时就会赋予, 我们在必要时可以改写这两种特殊的属性让其属性的访问更加的合理化, 这两种特殊的属性称呼及作用如下: 数据属性: 通过对数据属性的设置, 我们可以让用户操作普通的数据(obj.name)时限制他们可以操作的权限, 可以让其数据变得不可修改.不可在for...in中被其枚举.不可以删除该数据并且不能让其改变原有的部分数据属性([[ Enumerable ]].[[ Configurable ]]…
ES5中对象的属性可以分为‘数据属性’和‘访问器属性’两种. 数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值. 数据属性特性:value.writable.enumerable.configurable. 解释:configurable:true/false,是否可以通过delete删除属性,能否修改属性的特性,能否把属性修改为访问器属性,默认false: enumerable:true/false,是否可以通过for in循环返回,默认false: wr…
ECMA-262第五版在定义时,描述了属性property的各种特征,定义这些特性是为了实现javascript引擎用的,为了表示该特性是内部值,规范把它们放在了两对儿方括号中,例如[[Enumerable]].我们参考第五版描述. ECMAScript中有两种属性:数据属性和访问器属性. 数据属性 数据属性包含一个数据值的位置,在这个位置可以读取和写入.该属性有4个描述其行为的特性. [[Configurable]]:表示能否通过delete删除属性从而重新定义属性,能否修改属性特性,或者能否…
一.数据属性 1.数据属性:它包含的是一个数据值的位置,在这可以对数据值进行读写. 2.数据属性包含四个特性,分别是: configurable:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或能否把属性修改为访问器属性,默认为true enumerable:表示能否通过for-in循环返回属性 writable:表示能否修改属性的值 value:包含该属性的数据值.默认为undefined 二.访问器属性 1.访问器属性:这个属性不包含数据值,包含的是一对get和set…
在学习JavaScript原型(prototype)和原型链(prototype chain)知识的时候,发现数据属性和访问器属性的重要性,通过不断的查找相关知识,浅显理解如下,若有差错,希望不吝赐教: 一.数据属性 1.什么是数据属性 默认的对象的属性就是数据属性,一般用于数据存储,有四个特性描述它的行为: ①属性值 [value]:用来保存这个属性的数据值,默认值是undefined; ②可写性 [writable]:表示是否能修改这个属性的值,默认值是true; ③可枚举性 [enumbe…
1.数据属性 Configurable:true|false,表示能否通过delete将属性删除,默认为true.当把属性的Configurable设置为false后,该属性不能通过delete删除,并且也无法再将该属性的Configurable设置回true. Enumerable: true|false.表示属性可否被枚举,默认true. Writable: true|false.表示属性是否可写,默认true Value:属性的值 数据属性可以直接在对象上定义,也可以使用Object.de…
属性类型 数据属性 - 包含一个数据值的位置,可以读取和写入值 [writable] 是否能修改属性的值 true [enumerable] 是否通过for in 循环返回属性(是否可以被枚举) true [configurable] 是否能通过delete删除,能否修改属性的特性,能否修改访问器属性 true [value] 包含这个属性的数据值,读取属性值的时候从这个位置读取. undefined 访问器属性 [enumerable] 是否通过for in 循环返回属性(是否可以被枚举) t…
原文 :http://www.jb51.net/article/91698.htm 总结 ES5提供了Object.getOwnPropertyDescripter()方法来获取给定属性的描述符. ps:getOwnPropertyDescripter 该方法接收两个参数:属性所在的对象和要读取其描述符的属性名称.结果会返回一个对象,如果是访问器属性,返回的对象有configuable.enumerable.get和set:如果是数据属性,这个返回对象的属性包括configuable.enume…
ES5中对象的属性可以分为‘数据属性’和‘访问器属性’两种. 数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值. 数据属性特性:value.writable.enumerable.configurable. 解释:configurable:true/false,是否可以通过delete删除属性,能否修改属性的特性,能否把属性修改为访问器属性,默认false: enumerable:true/false,是否可以通过for in循环返回,默认false: wr…
ECMA-262定义这些特性是为了实现JavaScript引擎用的,因此在JavaScript中不能直接访问它们.为了表示特性是内部值,该规范把它们放在了两对儿方括号中,例如 [[Enumerable]] . ECMAScript中有两种属性:数据属性和访问器属性. 1. 数据属性 数据属性包含一个数据值的位置.在这个位置可以读取和写入值.数据属性有4个描述其行为的特性. [[Configurable]] :表示能否通过 delete 删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性…
一.数据属性 Configurable:表示能否通过Delete删除属性从而重新定义属性,能否修改属性的特性,能否把属性修改为访问器属性.默认true. Enumerable:表示能否通过for-in循环返回属性.默认true. Writable:表示能否修改属性的值.默认true. Value:包含这个属性的数据值.默认undefined. 要修改属性默认值,必须使用Object.defineProperty()方法. 参数:属性所在的对象,属性的名字和一个描述符对象(descriptor:c…
对象访问器就是setter和getter,他们的作用就是 提供另外一种方法来获取或者设置对象的属性值, 并且在获取和设置的时候,可以用一定的其他操作. 看下面代码: <script> var person = { _name : "abc", //注意此处的_name有一个下划线 }; Object.defineProperty(person,"name",{ //注意第二个参数的前面没有下划线,所以_name和name是两个不同的属性 set : fu…
var book={ _year:2004, edition:1};Object.defineProperty(book,"year",{ get:function(){ return this._year; }, set:function(newValue){ if(newValue>2004) { this._year=newValue; this.edition+=newValue-edition; } }});book.year=2005;alert(book.editi…
1.干嘛用的? getter()函数:返回有效的值 setter()函数:调用它并传入数据,这个函数决定如何处理数据 2.具备哪些属性?如何定义? configurable(默认为true),enumerable(默认为true),get(默认为undefined),set(默认为undefined) 四个属性特征 3.具体应用? var book={_year:2017,edition:1}; Object.defineProperty(book,"year",{ get:funct…
此文为转载,原文: 深入理解对象的数据属性与访问器属性 创建对象的方式有两种:第一种,通过new操作符后面跟Object构造函数,第二种,对象字面量方式.如下 var person = new Object(); person.name = 'Nicy'; person.age = 21; person.sayName = function() { console.log(this.name); }; var person = { name: 'Nicy', age: 21, sayName:…
1.在对象中定义get,set访问器属性 <script> var test = { _name:"pmx", _age:18, _born:1990, get name(){ return "name is "+this._name; }, set name(value){ this._name = value; }, get born(){ return this._born; }, set born(value){ this._born = val…
在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的.可枚举性决定了这个属性能否被for…in查找遍历到. 一.怎么判断属性是否可枚举 js中基本包装类型的原型属性是不可枚举的,如Object, Array, Number等,如果你写出这样的代码遍历其中的属性: var num = new Number(); for(var pro in num) { console.log("num." + pro + " = "…
之前对get/set的理解一直有误,觉得get set 是对象属性方法.看了别人的博客也有很多疑问,今天系统的做了很多测试终于弄明白了.(自己通过看书和写demo测试的,如有不对欢迎大家批评指正) get/set访问器不是对象的属性,而是属性的特性.大家一定要分清楚.特性只有内部才用,因此在javaScript中不能直接访问他们.为了表示特性是内部值用两队中括号括起来表示如[[Value]].  1.先简单介绍一下属性的这些特性(这里是简单的背书)          (1)数据属性——包含一个数…
昨天面试出了一道面试题 本人我做错了 于是痛定思痛 再过一遍面向对象 var name="一体机"; var value="infolist"; //构造函数 function Anbay(){ this.name="安备"; this.value="anbay"; } //原型 Anbay.prototype.show=function(message){ alert(this.name); alert(message);…
昨天在写文章(转载)的时候发现了有些对象的方法是分可枚举性和不可枚举性的.简单的查了一下资料,今天来捋一捋啥是对象的可枚举啥是不可枚举. 可枚举性: 对象的每一个属性都有一个描述对象,用来描述和控制该属性的行为,用Object.getOwnPropertyDescriptor方法来获取该描述对象(用Object.defineProperty方法来设置). 然后这个Object.defineProperty的方法不是vue双向数据绑定的原理吗!!下次再说…描述对象的enumerable属性,称为”…