JS-new 使用与不使用实例化对象的区别

JavaScript 中并没有真正的类,但 JavaScript 中有构造函数new 运算符。构造函数用来给实例对象初始化属性和值。任何 JavaScript 函数都可以用做构造函数,构造函数必须使用 new 运算符作为前缀来创建新的实例。
默认情况下,如果你的构造函数中没有返回任何内容,就会返回this——当前的上下文。

1
2
3
4
5
6
7
8
9
function Friend (name) {
this.name = name
}

var my1 = Friend('xiaochou')
var my2 = new Friend('xiaochou')

console.log(my1) // undefined
console.log(my2) // Friend {name: "xiaochou"}

第一种不是实例化,只是调用函数把返回值赋给变量。
第二种是构造函数式,即通过 new 运算符调用构造函数 Function 来创建函数,达到一种创建自定义对象 + 继承公有属性/方法的效果。