call使用场景:
function Person(name,age,sex){
this.name = name;
this.age = age;
this.sex = sex;
}
function Student(name,age,sex,tel,size){
Person.call(this,"lilei","10","男");
this.tel = tel;
this.size = size;
}
var student = new Student("nihao",18,"nan","tel:","code:");
使用的场景是,新建一个功能包含Person的里面所有的信息,同时还要比这些信息多的一个函数,最后实例化一个数据引用Student
解析:student 是利用Student来创建一个自己的函数,传入对应的参数,获取自身对应的数据信息
Student和 Person的数据相比较起来,Student的数据中只是比Person的数据多了两条数据(也就是说,Student的数据是完全包含Person的数据,Student的功能大于Person的功能,所以我们有快捷的方式来引用Person的数据来创建Student自己的数据,正常的情况下,我们使用Person.call()来快速创建自己的数据,改变This的指向即可,一般我们的想法是:最后我们是使用student来获取最终的数据,所以这里的写法Person.call(student,name,age,sex)来表达,这里虽然会指向student,但是student的指向会是Student,但是在Student中并未完整的获取到Person的数据,因为我们需要获取到Person的数据,所以在这里,可以使用this来代替指向,这时候的指向是指向Person了,也就是说,Person.call中的this和Person中的this是同一个,这样就可以完整的拿到Person的数据,最后使用student就可以到完整的数据了,Person.call(this,"name",18,"size"))