构造函数与原型
构造函数的形式:
1.定义构造函数
2.使用new关键字创建对象
3.通过构造函数使用this为实例化对象赋值
4.返回实例化对象
1.构造函数
function Student(name,age){
this.name = name,
this.age = age
}
var stu1 = new Student("冰冻黑熊",19)
上面代码中,创建一个含有两个参数的Student的构造函数,其中this指针指向该实例化对象,即this指向stu1,并将值传入this.name。
console.log(stu)
输出stu1可以看见,age与name已经被赋值,而Prototype则是原型。
2.原型
function Student(){
}
Student.prototype = {
init:function(name,age){
this.name = name,
this.age = age
},
// 将study方法写入构造函数原型中
study:function(){
console.log(this.name)
console.log(this.age)
}
}
在1的基础上,使用prototype将study函数写入Student原型中,通过Student实例化的对象,默认继承study方法。同时将传值封装成Init函数写入原型中
var stu = new Student("冰冻黑熊",18)
console.log(stu)
stu.init('冰冻黑熊',18)//通过Init函数进行传值
stu.study()
可以看见,study函数被写入原型中。
将study方法写入构造函数与原型中,同样能得到相同的效果,但为什么要还要写在原型中呢?如果写在构造函数中,每创建一个实例化对象,系统就要为其分配一个内存来存储这些函数,在实例化对象很多的情况下,就会浪费内存。写在原型中,则是默认由原型继承而来,多个实例化对象共享一个内存空间。