3.构造函数用new创建实例的过程
1) 创建一个空对象
2) 将this 指向实例, 将函数的作用域赋给空对象
3) 创建新对象
4) 返回新对象
使用构造函数不仅代码更加简洁,更重要的是能够识别对象的类型了
4.构造函数的实例的关系
1)实例的constructor = 构造函数 console.log(p1.constructor = Person) true
Costructor 属性最初就是用来标识对象的类型的,
2) 用instanceof判断对象的类型更加严谨, console.log(p1 instanceof Person) true
- 构造函数的问题
每创建一个实例, 都生成新的一模一样方法,造成内存的极大浪费
Console.log(p1.sayHello == p2.sayHello) false
2. 解决方法:这样我们想到把方法放到函数的外面,这样 p1.sayhello = p2.sayHello
function sayHello = function() {
Console.log (“你好”)
}
function Person(name, age){
This.sayHello = sayHello;
}
3. 初步解决方法:将方法封装在一个对象里面,避免全局命名空间冲突的问题
var fns = {
sayHello:function(){
Console.log (“你好”)
},
sayAge: function(){
console.log(this.age)
}
}