构造函数
-
构造函数用于创建特定类型的对象的,如:Object()、Array(),当然也可以自定义
-
构造函数首字母大写(用于区分)
-
构造函数不一定是函数声明表达式,也可能是赋值变量表达式
-
构造函数如果没有传参数,实例化时可不添加括号 如:let person = new Person
-
构造函数也是函数,任何函数只要用new调用就是构造函数
- 不指定this指向(不是new或call、apply调用)this只想global对象(浏览器window对象)
- 指定特定对象为作用域,即把this指向这个对象,执行代码后所有属性都会添加在这个对象上
const Person = function(name,age) {
this.name = name
this.age = age
this.sayName = function() {
console.log(name)
}
}
// 构造函数调用
cosnt person1 = Person("limei",20)
person1.sayName()
// 普通函数调用
Person("limei1",21)
window.sayName()
// 在另一个对象的作用域中调用
let o = new Object()
Person.call(o,"limei2",22)
o.sayName()
构造函数的问题
构造函数内定义的方法会在每个实例都创建一遍
解决办法: 把函数定义在构造函数外部