1.构造函数执行:
function Fn(name, age){
var n = 10;
this.name = name;
this.age = age + n;
}
var f = new Fn('aaa', 20);
console.log(f.n) //undefined, 只有this.xxx = xxx,才和实例有关系,n只是私有作用域的一个私有变量而已
2,构造函数的一点细节
// 构造函数执行,自己写了return
/*
1,return一个基本值,构造函数返回依然是类的实例,没有受到影响
2,如果返回的是引用值,值会被默认返回的实例覆盖,此时接收到的结果不再是当前类的实例了
=》构造函数执行的时候,尽量减少return的使用,防止覆盖实例
*/
function Fn(name, age){
var n = 10;
this.name = name;
this.age = age + n;
return; // 这里return 相当于 return undefined, 返回的是基本类型值,不会覆盖返回实例,只是起到了终止代码执行的结果
console.log(this.name)
}
3,构造函数不需要传参时,带不带()基本没影响
var f = new Fn() // var f = new Fn,// 如果Fn不需要传递实参,我们可以省略小括号,意思还是创建实例