基础算法
数据库
Javascript
HTML 编程
SVG
附录
在 Javascript 语言中,对象、类、元素都有自己的属性。Javascript 是一种非常灵活的语言,声明或创建属性有多种方式,这里整理一下 Javascript 中属性的创建或声明方式。
这里的对象指已经实例化的对象,包括内存对象 Object、函数、元素、全局对象比如 document。为对象添加属性,只要直接赋值就好。
这样就为这个已经存在的对象添加了一个额外的属性,这个属性值可以在使用中再次修改。但是这个属性只针对这个已经创建的实例对象,如果为对象所属的类都添加属性,该怎么办?
比如为所有 DIV 元素添加一个新的实例属性,可以使用原型添加。
注意原型类不建议添加引用类型的属性,如数组、对象等。否则所有实例对象共享这一个值,这和静态属性没什么两样。静态属性可以直接在类名上添加。
如果为类添加可以有 getter 和 setter 逻辑的属性,可以用Object.defineProperty
或Object.defineProperties
方法。
因为必须有一个地方保存这个属性的值,所以用了自定义标签属性。
在 Javascript 中,有一个每一个对象都有的属性,叫hasOwnPrperty
,用于判断属性是不是原生属性。
Object.defineProperty
方法本质是也是为原型添加属性,所以用这个方法添加的属性都不是原生属性,只有在类中定义的属性才是原生属性,
在 Javascript 类定义属性的方式也有好几种,先看代码,然后分别解释。
各个属性变量的解释如下:
property1
属性在构造器中使用this
关键词定义,没有 getter 和 setter 逻辑。property2
在构造器通过get
和set
关键词定义,分别有 getter 和 seter 逻辑,但是需要将值保存在某一个地方,这里用了一个私有变量#property3
,还记不记得上一节中用的是标签属性。property3
是私有变量,赋值和使用都必须带符号#
,如this.#property3
,仅能在定义类的各种逻辑中使用,不能在类定义外使用,包括原型扩展。property4
是静态变量,须使用类名引用MyElement.property4
。property5
是静态私有变量,也需要使用类型引用MyElement.#property5
,而且也仅能类定义的各种逻辑中使用。property1
和property2
,私有属性访问不到,静态属性不算。其实没什么可重点强调的,跟变量的规则是一样的,只能包含英文字母、数字、下划线_
和美元符号$
,而且不能以数字开头。更多变量的问题请参照上一篇笔记。
(本文完)