js中的new操作符和构造函数
new操作符作用于一个普通函数,这个普通函数就变成了构造函数。构造函数首字母一般大写;
使用new操作符创建构造函数的实例对象的步骤
:
- 在内存中新创建一个对象;
- 这个对象的
__proto__
指向构造函数的prototype
; - 构造函数内部的this指向该新对象;
- 执行构造函数内部的代码,也就是给新对象添加属性;
- 返回对象,如果构造函数内部返回的是基本类型,则默认会返回空对象;如果有要返回的对象,则直接返回该对象;否则返回创建的新对象。
let obj=new function(){
return String('foo')
}
let obj1=new function(){
return new String('foo')
}
obj=='foo' ; //false
obj1=='foo'; //true
对于String、Number、Boolean等函数作为普通函数执行时,只是将参数转换为对应的类型(基本类型),此时将其(基本类型)作为构造函数的返回对象时,则会被默认返回空对象。
而new String则是创建了一个字符串对象,并将其返回。