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

JavaScript05

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

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

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

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

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

通过打印p,可以看到:

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

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

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

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

用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。

Using closures designed primarily to private methods and variables. Closure advantage of global variables are avoided contamination, the disadvantage is the closure will be permanent memory, the memory usage increases, improper use is likely to cause a memory leak。

闭包有三个特性:

Closures have three characteristics:

1、函数嵌套函数

2、函数内部可以引用外部的参数和变量

3、参数和变量不会被垃圾回收机制回收

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。

为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript。

在日常的开发当中,我们会发现系统定义的属性没有办法满足我们的开发,所以我们需要自己去定义属性。下面分享一个定义属性的实例:

上面的例子简单实现了JS的自定义属性以及自定义属性的使用,希望对看文章的小伙伴有所帮助。