JS中的静态属性及实例属性

JavaScript042

JS中的静态属性及实例属性,第1张

在回忆怎么判断一个对象是一个数组的方法时,想到了Array.isArray()这个方法,突然有点不理解,这是什么意思,isArray()怎么可以通过Array直接调用,这样的情况很多,比如Object上的方法。

看了几篇文章,简单理解是:JS中有“静态属性”和实例属性。

定义在构造函数上的属性。只能通过构造函数名来调用。

那么就是说,上面的setName方法可以通过Person来调用,不能通过实例调用。因为setName是其内部方法。 举个例子:

通过打印p,可以看到:

可以发现,myName和getAge属性并没有被实例所继承。

我的理解是: 定义在构造函数原型上的属性及在构造函数内部绑定到this上的属性。这些属性可以通过实例对象直接调用。

这个时候,p可以调用name,age,getName这些属性。

可以通过Object.getOwnpropertyNames()等此类方法查看有哪些属性。

1.hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的属性。如果有,返回true,否则返回false。

2.(属性名称 in 对象) 不管属性是原型的还是实例的,只要存在就返回ture否则返回false

那么我们可以利用这两个方法做一个对比,如果实例中没有且存在了这个属性,那么就是原型的