1.任何函数都可用作构造函数---------只要这个函数使用new运算符做为前缀来创建了新的实例 eg; ver tony = new Person(); Person()就成为了构造函数
2.构造函数的命名规则:驼峰命名+首字母大写 eg: CoolPerson()
3.调用构造函数的区别两种区别
1)标准写法:ver tony = new Person();
使用了new运算符;
如果没有形参,还可以去掉括号,写成 ver tony = new Person;
默认情况下,如果构造函数中没有返回任何内容,就会返回this(也就是一般教程里说的“当前的上下文”),要不然返回任意非原始类型的值(意思是返回值不是形参,而是调用时使用的实参)
2)省略new前缀的方式调用构造函数
例如:Person('tom');
与标准写法不同的是:tom不是Person的实例;上面的这个写法并没有构建出一个Person的实例,所以可以这么理解:
ver tony = new Person(); //标准写法
Person('tom'); //省略了new的写法
如果我们是上帝,有了创造人类的模型Person();
tony就是我们创造出的一批人,假设他们都叫tony,tony掌握了人类模型Person()中所有的或一些属性;
重要的是他们都住在tony大家庭里(像王家庄,李家庄);
①如果我们想要找到具有某些属性的一批人,我们就可以不从所有的Person()中找,那范围太大了,我们可以从tony的大家庭里的找到需要的人;
②找到tony的大家庭后我们可以说:看,这是我创造的人中,所有叫做tony的人,都在这;
而:
tom是我们创造出的人中,所有叫做tom的人,但是他们住的很分散,没有住在一起,
虽然tom同样具有Person()的所有或一些属性,但是当我们想找到具有某些属性的人的时候,却无法从tom的大家庭中中找到,
③而必须先从所有人中找叫做tom的人,并且是我们需要的人;
④我们每找到一个叫做tom的人,都不可以说,看,这是我创造的人中,所有叫做tom的人,他只是一个人,不能代表全部人;
解释:
①和③说明标准写法在tony内部创造了局部变量,被外界污染的可能性很小;省略new的写法则创建了全局变量,很有可能被外界污染
②和④说明标准写法下tony是Person()的一个实例;而tom不是