欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

call和apply区别/bind的使用

程序员文章站 2024-01-29 19:23:28
...

1.构造函数call/apply:

//构造函数
function User(name){
  this.name=name
}
// let obj=new user('yang');
// console.log(obj);
let UnameObj={
  age:12,
  height:150
}
User.call(UnameObj,'赵四_刘能——多行不义必自毙');
User.apply(UnameObj,['赵四_刘能——多行不义必自毙']);
console.log(UnameObj);/* {age: 12, height: 150, name: "赵四_刘能——多行不义必自毙"} */

call接受的是字符串参数, apply接受的数组参数

2.构造函数的继承:

//构造函数的继承
function requestFn(){
  this.get=(params)=>{
    return 'www.baidu.com?'+this.url+'/'+Object.keys(params).map(v=>`${v}=${params[v]}`).join('&')
  }
}
function getUser(){
  this.url='users/lists';
  requestFn.call(this)
}
function getArticle(){
  this.url='article/lists';
  requestFn.call(this)
}
let a=new getUser();
let b=new getArticle;
console.log(a.get({user:'yang',age:12}));

console.log(b.get({user:'story',list:'200',page:12,size:'10'}));

3.bind的使用:

    //bind使用
function requestFn(name,age){
    console.log(name,age)//
  return this.url
}
let func=requestFn.bind({url:'baobao.com'},'yang');//不立即执行
console.log(func('zhangsan',12))/* 
yang zhangsan
dd.html:57 baobao.com */
/*
*参数是先从bind函数后面开始找 如果找到了就传参  和调用的时候链接起来  yang第一个参数,zhangsan  是第二个参数
*参数在哪里传递都行  可以调用的时候可以bind定义的时候 都有以bind定义时候为准
*/

*bind不立即执行 只是定义返回了新的函数

*参数是先从bind函数后面开始找 如果找到了就传参  和调用的时候链接起来  yang第一个参数,zhangsan  是第二个参数
*参数在哪里传递都行  可以调用的时候可以bind定义的时候 都有以bind定义时候为准