构造函数、实例
-
什么是构造函数?
构造函数也是函数,本质上和所有的函数没差。差距就在调用方式上。为了和普通函数区别开,规定:
- 用new 关键字调用的函数统称为构造函数。
- 为了与一般函数区别开,一般作为构造函数使用的函数命名首字母大写
//构造函数 function Person(name){ this.name = name } var p1 = new Person('张三') //调用一下这个构造函数 //普通函数 function say(str) { console.log(str) } say('hellow') //调用这个函数
上面的例子中你要强行使用
var s1 = new say()
也是没问题的,因为只要是函数都能这么写。
构造函数给我的感觉就好像是高中时候的体育生,他们也是学生,要上文化课,以体育为主(毕竟要考试)。大部分学生以上文化课为主,体育也能做。两者侧重点不同,本质都是学生。 -
new关键字做了些什么?
function Person(name){ this.name = name } var p1 = new Person('张三') //这一步做了什么?
在这里,new 主要做了三件事:
- 在内存中开辟一块空间
- 进行this.name = name 的初始化操作
- 将这块空间的地址赋值给变量p1 (平常所说的p1指向这块空间)
tips 这里多插一句,函数默认返回return this 。 这也就解释了p1 = 0x001 是怎么来的。由于js中看不见地址,所有没法演示。有过c/c++经验的朋友应该很能理解 p1 的值其实就是地址。
-
什么是实例?
文中实例即p1。实例具体来说一般就是new出来的那块内存空间。实例与构造函数的关系类似于张三和人类的关系。