首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript数据属性访问属性

看《深入理解JavaScript》的this篇时看到“访问属性”这个不熟悉的名词,百度后找到两篇感觉比较合适的文章,整合记录一下,以参考资料2为主,参考资料1为辅助补充。...数据属性 数据属性包含一个数据值的位置。在这个位置可以读取和写入值。数据属性有 4 个描述其行为的特性。...访问属性 访问属性不包含数据值(没有 [[Value]] 特性),它们包含一对 getter 和 setter 函数(这两个函数都不是必须的)。...在读取访问属性时,会调用 getter 函数,这个函数负责返回有效的值;在写入访问属性时,会调用 setter 并传入新值,这个函数负责决定如何处理数据访问属性有如下 4 个特性。...参考资料 JavaScript笔记--数据属性访问属性 JavaScript 属性类型(数据属性访问属性

1.6K31

浅谈JavaScript 数据属性访问属性

JavaScript中对象被定义为"无序属性的集合,其属性可以包含基本值、对象或函数。"通俗点讲,我们可以把对象理解为一组一组的名值对,其中值可以是数据或函数。...中,对象的属性分为两种类型:数据属性访问属性。...上面的注释中是分别对各个属性修改后的影响的测试。大家可以自己运行下试试效果。 属性类型 JavaScript中定义了两种不同的属性数据属性访问属性。...在JavaScript中不能直接访问特性,我们把它放在两对方括号中,例如[[Enumerable]]。 •数据属性 数据属性主要有四个特性描述其行为: 1....•访问属性 访问属性不包含数据值。它包含一对getter和setter函数。

1.3K40
您找到你想要的搜索结果了吗?
是的
没有找到

属性访问

通常可以通过点(.)操作符的形式去访问对象的属性,关于属性访问,也有相应的魔法方法来管理, 属性相关的魔法方法 魔法方法 含义 __getattr__(self,name) 定义当用户试图获取一个不存在的属性的行为...__getattribute__(self,name) 定义当该类的属性访问时的行为 __setattr__(self,name,value) 定义当一个属性被设置时 __delattr__(self...,name) 定义一个属性被删除时 例子 class C: def __getattribute__(self,name):#当该类的属性访问的行为 print('getattribute...print(i)...tianjun>>> 字符串相当一个容器,也同时是个迭代器,for语句的作用介绍触发这个迭代器的迭代功能,每次拿出一个数据,就是迭代操作 关于迭代 Python有两个BIF 重点...生成器、什么是生成器 通过列表生成式,我们可以直接创建一个列表,但是,受到内存限制,列表容量肯定是有限的,而且创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,

73030

高性能的JavaScript--数据访问(2)

闭包,作用域,和内存  闭包是JavaScript最强大的一个方面,它允许函数访问局部范围之外的数据。闭包的使用在当今最复杂的网页应用中无处不在,不过,有一种性能影响与闭包有关。...因此,存在很多对象成员访问。 对象成员包括属性和方法,在JavaScript中,二者差别甚微。对象的一个命名成员可以包括任何数据类型。...既然函数也是一种对象,那么对象成员除了传统的数据类型外,也可以包含一个函数。当一个成员用了一个函数时,它被称作一个“方法”,而一个非函数类型的数据则被称作“属性”。...原形  对象成员比直接量或局部变量访问速度慢,在某些浏览器上比访问数组项还要慢。这和JavaScript中对象的性质有关。...总结 1.在JavaScript中,数据存存储的位置可以对代码整体性能产生重要影响。有4种数据访问类型:直接变量,变量,数组项,对象成员。他们有不同的性能考虑。

51920

JS入门难点解析13-属性描述符,数据属性访问属性

ECMAScript中有两种属性数据属性访问属性。 2. 数据属性访问属性 2.1 数据属性 数据属性包含一个数据值的位置,在这个位置可以读取和写入值。数据属性有4个描述其行为的特性。...2.2 访问属性 访问属性不包含数据值,而是包含一对getter和setter函数(这两个函数非必须)。在读取访问属性时,调用getter函数,在写入访问属性时,调用setter函数。...3.2 访问属性描述符对象 访问属性描述符对象有4个属性。 可配置性 configurable:表示能否通过delete删除属性,能否修改属性特性,能否把访问属性修改为数据属性。...事实上,对访问属性的修改实际是通过内部的数据属性为桥梁进行修改的,此时内部的数据属性已经无法修改了,那么对访问器的属性修改也是无效的了。..._doubleA); // 2 参考 BOOK-《JavaScript高级程序设计(第3版)》第6章 BOOK-《你不知道的JavaScript》 第2部分 JS属性特性(属性描述符) ECMAScript

2K10

高性能的JavaScript--数据访问(1)

写在前面 数据存储在哪里,关系到代码运行期间数据被检索到的速度。在JavaScript中,此问题相对简单,因为数据存储只有少量方式可供选择。正如其他语言那样,数据存储位置关系到访问速度。...在JavaScript中有四种基本的数据访问位置: 1.Literal values 直接量 直接量仅仅代表自己,而不存储于特定位置。...每一种数据存储位置都具有特定的读写操作负担。大多数情况下,对一个直接量和一个局部变量数据访问的性能差异是微不足道的。访问数组项和对象成员的代价要高一些,具体高多少,很大程度上依赖于浏览器。...函数对象正如其他对象那样,拥有你可以编程访问属性,和一系列不能被程序访问,仅供JavaScript引擎使用的内部属性。其中一个内部属性是[[Scope]],由ECMA-262标准第三版定义。...内部[[Scope]]属性包含一个函数被创建的作用域中对象的集合。此集合被称为函数的作用域链,它决定哪些数据可由函数访问

72420

高性能Javascript--高效的数据访问

Javascript中,有四种基本的数据访问位置: Literal values 直接量 直接量仅仅代表自己,而不存储于特定的位置。...它包含我们编程定义的可访问属性,和一系列不能被程序访问,仅供Javascript引擎使用的内部属性,其中一个内部属性是[[Scope]],由ECMA-262标准第三版定义。   ...内部[[Scope]]属性包含一个函数被创建的作用域中对象的集合。此集合被称为函数的作用域链,它决定哪些数据可以由函数访问。此函数中作用域链中每个对象被称为一个可变对象,以“键值对”表示。...Closure,Scope,and Memory 闭包,作用域,和内存   闭包是Javascript最强大的一个方面,它允许函数访问局部范围之外的的数据。...如果这些属性不是对象的实例成员,那么成员解析还要在每个点上搜索原型链,这将需要更多的时间。   Summary 总结 在Javascript中,数据存储位置可以对代码整体性能产生重要影响。

79920

JavaScript——对象的属性

JavaScript中,所有的对象都是一组属性的集合,属性可以是数值,字符串等原始类型,也可以是函数,或者是其他对象。 属性的类型 JavaScript中的属性有两种类型:数据属性访问属性。...数据属性 数据属性可以看成是直接封装了一个内部变量,内部变量中存放了该属性的值。当对某个对象尚未存在的属性进行赋值时,该属性将会作为数据属性被自动创建。...; } } } 有了get方法,我们就可以在属性第一次被访问时才去进行初期化处理,而有了set方法,我们就可以追加对赋值进行类型转化等很多数据属性没法实现的程序逻辑。...属性的特性 ES5开始,JavaScript属性提供了三个特性用于描述其各种特征。特性是内部值,不能直接访问。...,因此访问objC.prop1时,JavaScript将会按照objC—>objB—>objA的原型链进行顺序查找,最后从objA中取出该属性值。

2.4K30

JavaScript实现私有属性

本文并不是为了打破以上误解(实际上笔者自己也有困惑),只是简单介绍几种JavaScript实现私有属性的方式,以及各自的优劣。 1....而且也并没有实现私有属性,上述代码中的实例person可以直接访问到_name属性: alert(person._name); //'Joe' 2....(){ return _name; } } var person = new Person('Joe'); 这种方式的优点是实现了私有属性的隐藏,Person 的实例并不能直接访问_name..._name); // undefined alert(person.getName()); //'Joe' 使用闭包和特权函数实现私有属性的定义和访问是很多开发者采用的方式,Douglas Crockford...基于强引用散列表的实现方式 JavaScript不支持Map数据结构,所谓强引用散列表方式其实是Map模式的一种变体。

93450

Javascript的private属性

Private Members in JavaScript 在该文章中指出,在对象内部使用 var 创建的变量属于私有变量、这个是外部无法访问的。 在这里var的变量我们换一种说法就是局部变量。...事实上不能算是真正的私有属性。 我们知道在面向对象编程中,一个类的属性、方法如果能够被其他类访问调用,那么这个是public 公开属性、方法。 但是他有一个隐式条件就是,他也能被类自身其他的方法访问。...类的private 私有属性、方法虽然不能被外部属性访问,但是他是需要满足被同一个父类下的其他方法访问的。...而局部变量是方法内部创建的,他只能在当前方法的生命周期内被调用,如果一个JavaScript对象中包含了多个方法,在方法内部var创建的属性和方法,是不能被其他任何方法、包括同一个类的其他子方法调用。...---- 在现代JavaScript的很多案例中,如果希望保持属性的私有性,我们一般可以采用 封装返回的方式生成对象。

68540
领券