js构造函数

Posted shuangcherry

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js构造函数相关的知识,希望对你有一定的参考价值。

在js中构造函数的函数名一般首字母要大写。

1 function Fn(name,age){
2     this.name=name;
3     this.age=age;
4     this.str=‘hello‘;
5     //return this;  这一句可省略,因为构造函数默认有这一句
6 }
7 
8 var f=new Fn(‘zhangsan‘,10);
9 console.log(f.age);//10

通过new一个构造函数可以创建一个对象,那么new一个构造函数的过程中,具体做了什么呢?

1.创建了一个空对象,并将this指向这个空对象。

2.执行函数,即为this添加属性和属性值。

3.返回这个对象。

 

其次,在js中array,object,function都可以通过new对应的函数来创建:

var a=[1,2,3] 实际上是 var a=new Array()的语法糖

var a={}实际上是var a=new Object()的语法糖

var a=function(){}实际上是var a=Funciton()的语法糖

虽然后者写法上没错,但实际写的过程还是会推荐前一种写法,简洁,易于理解。

 

最后,使用instanceof 可以判断一个函数是否是某个变量的构造函数。如:

1 f instanceof Fn;//true

 

以上是关于js构造函数的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段

防止 Proguard 删除片段的空构造函数

无法解析片段中的 ViewModelProvider 构造?

为啥要避免片段中的非默认构造函数?

片段真的需要一个空的构造函数吗?

这个嵌套类构造函数片段可以应用于泛型类吗?