当前位置: 首页 > news >正文

农产品信息网站建设方案在线制作名片生成器

农产品信息网站建设方案,在线制作名片生成器,大学网页设计与制作作业,建e室内设计网画图目录 一、call 1、继承的子类可以使用父类的方法 2、可以接收任意参数 二、call、apply、bind比较 1、案例一 2、案例二 三、总结 这个三个方法都是改变函数的this指向的方法。 一、call 代码: const obj{uname:"pink"}function fn(){console.log…

目录

一、call

1、继承的子类可以使用父类的方法

2、可以接收任意参数

二、call、apply、bind比较

1、案例一

2、案例二

三、总结


这个三个方法都是改变函数的this指向的方法。

一、call

代码:

    const obj={uname:"pink"}function fn(){console.log(this)  //window}// 1. 调用函数fn()// 2. 改变 this 指向fn.call(obj)

打印:可以看到函数在非严格模式下this指向window, 通过call方法将this指向了obj 。

1、继承的子类可以使用父类的方法

    function Animal(){//this 指向小catthis.eat=function (){console.log("吃东西")}}function Cat(){//this指向小catAnimal.call(this)  //key words}let cat = new Cat();cat.eat()

终端打印:若没有Animal.call(this) 将Cat中的this指向Animal,cat对象也不会有eat方法,会报错

也可实现多继承

    function Animal(){this.eat=function (){console.log("吃东西")}}function Bird(){this.fly=function (){console.log("飞翔")}}function Cat(){Animal.call(this)Bird.call(this)}let cat = new Cat();cat.eat()cat.fly()

打印如下:

2、可以接收任意参数

第一个参数就是我们函数中的this需要指向的对象

    function sayName(a,b,c){console.log(a,b,c)console.log(this)}sayName.call(undefined,1,2,3)

打印:

二、call、apply、bind比较

1、案例一

 let obj={name:"Jack"}function fun01(){console.log(this,this.name)}fun01.call(obj)

打印:可以看到,调用fun01调用call以后fun01的this就指向了obj的this,调用this的属性时也调用的是obj的了。

类似地,我们将call换成apply,

    let obj={name:"Jack"}function fun01(){console.log(this,this.name)}fun01.apply(obj)

打印:这里和call效果一样,都立即执行了。

再换成bind,并没有立即执行

    let obj={name:"Jack"}function fun01(){console.log(this,this.name)}fun01.bind(obj)

案例一,我们可以得出,call和apply都是立即执行的,而bind并不会调用立即执行。

2、案例二

    let obj={name:"Jack"}function fun01(age,sex){this.age=agethis.sex=sexconsole.log(this,this.name,this.age,this.sex)}fun01.call(obj,18,"female")

打印

    let obj={name:"Jack"}function fun01(age,sex){this.age=agethis.sex=sexconsole.log(this,this.name,this.age,this.sex)}fun01.apply(obj,[18,"female"])

打印:这里可以看到call和apply效果相同,传入参数不同,apply传人的参数是数组,而call的参数是已逗号隔开的,并将这两种方法都会立即执行

    let obj={name:"Jack"}function fun01(age,sex){this.age=agethis.sex=sexconsole.log(this,this.name,this.age,this.sex)}console.log(fun01.bind(obj,18,"female"))fun01.bind(obj,18,"female")()

打印:bind不会立即执行,而是返回新函数对象,需要再调用函数对象再打印

三、总结

1、call、apply、bind方法都可以改变this的指向,可以配合this使用,实现继承的效果。

2、call、apply都是调用后会立即指向的,但区别在于call传入的参数的逗号隔开的,而apply传入的参数是数组。

3、bind调用后不会立即执行函数,而是返回一个新的函数,需要调用才能执行。

http://www.yayakq.cn/news/221787/

相关文章:

  • 旅游门户网站有哪些番禺建网站
  • 门户类网站的主页设计东莞快速建站平台
  • 网站建设首页线上推广有哪些渠道
  • 400电话实名制认证网站武侯区网站建设
  • 上海好的网站建设公司做的网站怎么让百度收录
  • 怎样建立自己手机网站上海中风险地区地图
  • 上海市区网站设计制作公司您网站建设
  • 文章资讯类网站电商网站页面分类
  • 福州市鼓楼区建设局网站房屋装修设计师怎么收费
  • 做网站的工作时间兰州seo优化公司
  • 建设银行网站未响应2345网址导航 中国最
  • wordpress站长微信网站主题
  • 网站建设七大步骤友情链接平台站长资源
  • 网站建设课程考核方案网站开发吧
  • 成都建设局网站首页如何创建网站小程序
  • 新网站如何做搜索引擎收录百度小程序排名
  • wordpress建站后怎样发布电脑咋建网站
  • 潜江做网站网站开发 经济可行性
  • 智联招聘网站可以做两份简历吗企业画册内容
  • 网站开发商城wordpress欲思主题
  • 邯郸做网站的公司wordpress5.0.2版的新功能
  • dedecms医院网站网站前台设计及开发是做什么的
  • logo网站素材网站开发与软件开发
  • php简单购物网站源码企业服务公司排名
  • 个人免费网站注册商河便宜做网站的公司
  • 全国村级网站建设谁能给我一个网站
  • 在ps中网站界面应做多大辽宁自助网站建设公司
  • 保姆给老人做爰神马网站wordpress网站背景
  • 北京网站推广服务如何建设一个彩票网站
  • 网站开发流程说明linux wordpress 建站教程