js中call和apply

call/apply

作用用来改变this指向两者的区别是参数的传递不同,call传递的是变量, apply传递的是数组

    var obj = {
         name:'ghost',
         age:'20'
    }
    function Person(name,age){
      this.name = name
      this.age = age
      this.say = function(){
          console.log(this.name)
      }
    }
    var person =new Person("charry", 20) //charry 
    person.say() //这里的this,谁调用指向谁 所以指向person 
   person.say.call(obj) //ghost 这里改变过this指向,其this指向obj

function Person(name, age, sex){
    this.name = name
    this.age = age
    this.sex = sex
}
function Student(name, age ,sex, tel, grade){
    Person.call(this, name, age, sex) //调用Peson的方法来实习自己的函数,这里的this指向的是Student本身
    this.tel = tel;
    this.grade = grade
}
  var student = new Student('ghost', 18, 'male', 18208891933, 100)
  console.log(student.name, student.age) //ghost 18 
//  allpy 和 call 相同,只是传递参数的列表不同
 function Chip(mate,type){
       this.mate = mate
 }
 function Battery(capacity, company){
     this.capacity = capacity
     this.company = company
 }
 function Phone(mate, type, capacity, company){
     Chip.call(this, mate, type) //传递的是变量
     Battery.apply(this, [capacity, capacity]) //传递的是数组
 }
 var phone = new Phone('glod', 'Snapdragon855',"4000ma",'oppo')
console.log(phone.mate)
console.log(phone.company) 

posted @ 2019-08-20 10:46  ghostdot  阅读(139)  评论(0编辑  收藏  举报