JS——Object静态方法

198 阅读1分钟

定义:就是直接使用类名调用的方法,比如Object.getOwnPropertyNames(obj),obj是一个对象,且静态方法是无法被子类继承或实例对象拥有的。

1.Object.getprototypeOf(obj)获得obj的原型,也可以使用obj.__proto__属性获得obj的原型(obj一般都是指实例对象)

image.png

image.png 2.Object.getOwnPropertyName(obj):可以将obj的可枚举和不可枚举的属性的名称组成一个数组返回

image.png

image.png

3.Object.keys(obj):可以将obj的可枚举和不可枚举的属性的名称组成一个数组返回

image.png

image.png

4.Object.values(obj):可以将obj的可枚举和不可枚举的属性的值组成一个数组返回。

image.png

image.png

5.Object.defineProperty(obj,propName,desc):该方法可以为obj新增一个名为propName的属性,同时它的属性定义为desc,desc使用一个对象赋值。

作用:是Vue实现数据双向绑定的原理。通过这个方法来劫持各个属性的setter、getter。在数据变动时发布消息给订阅者,触发相应监听回调。

(1) image.png

image.png (2) image.png

image.png

6.Object.create(proto,[props]) 以proto为原型,新建一个实例对象,同时将props定义的属性设置给这个新对象,以这种方式新建的对象都是Object类型.

image.png

image.png

7. Object.getOwnPropertyDescriptor(obj,propName) 返回obj的属性propName的属性描述符

image.png

image.png 8.Object.preventExtensions(obj) 可以禁止obj对象的属性扩展

9.Object.seal(obj) 可以禁止obj对象的属性扩展和删除,它相对与preventExtensible方法而言 ,将所有属性的configurable属性设置为false。

10.Object.freeze(obj) 可以禁止对obj的所有操作,它相对与preventExtensible方法而言,将属性的configurable属性和writable属性都设置为了false。