
发表日期: 2021-05-07 09:22:15 浏览次数:121
温县小程序制作【温县企业邮箱】温县网站外包、温县微信商城开发、温县网店美工、温县淘宝设计
温县,隶属于河南省焦作市,地处豫北平原西部,南滨黄河,北依太行,截至2017年,全县总面积481.3平方千米,辖7个乡镇、4个街道,262个行政村,总人口46.8万,县政府驻温泉街道。 [1]
古时因境内有温泉而得名,在夏时被称温国,明清隶属怀庆府辖。温县诞生了思想家卜商、三国著名政治家军事家司马懿、北宋画家郭熙等历史名人,是太极拳发源地,温、苏等姓氏起源地。全国闻名的“武术之乡” [2] 、“怀药之乡”和优质小麦种子基地,中国十大休闲旅游县。 [1] [3]
2018年,温县完成地区生产总值296.61亿元,城镇居民人均可支配收入达到27876元,农村居民人均可支配收入达到16258元。 [4-5]
call()方法是使用一个指定的this值和若干个指定的参数值的前提下调用某个函数或方法
语法:
function.call(thisArg, arg1, arg2, ...)
thisArg可选,非严格模式下,当值为null或者undefined时指向window
arg1... 参数列表
demo:
var foo = {name: 'xcc'}function bar (age) {console.log(`name: ${this.name}, age: ${age}`)}bar.call(foo, 20) // name: xcc, age: 20注意事项:
call改变了this的指向,由bar指向了foo
bar函数执行了
第一步:
试想当调用call时,把foo对象改造如下:
var foo = {name: 'xcc',bar: function() {console.log(this.name)}}带来的问题,给foo函数引入了对于的属性bar
解决方式:通过delete方法删除多余属性
模拟步骤分为下面几部:
将函数设置为对象的属性
执行该函数
删除该函数
等价于下面流程:
// 第一步foo.fn = bar// 第二步foo.fn()// 第三步delete foo.fn
实现方式:
// 第一版Function.prototype.call2 = function(context) {// 首先获取调用call的函数,通过this获取context.fn = thiscontext.fn()delete context.fn}var foo = {name: 'xcc'}function bar() {console.log(this.bar) // xcc}bar.call2(foo)给定call函数执行时添加参数执行
var foo = {name: 'xcc'}function bar(age) {console.log(this.name, age)}bar.call(foo, 20) // xcc 20// 第二版Function.prototype.call2 = function(context) {context.fn = this || windowvar args = []for(var i = 1, len = arguments.length; i < len; i++) {args.push('arguments[' + i + ']')}eval('context.fn(' + args +')')delete context.fn}var foo = {value: 1}function bar(name, age) {console.log(this.value, name, age) // 1 xcc 20return {value: this.value,name: name,age: age}}bar.call2(foo, 'xcc', 20)注意事项:
call()方法第一个值为null或者undefined时,非严格模式下指向window
函数是可以有返回值的
自定义call函数时入参的处理方式
apply()方法调用一个具有给定this值的函数,以及以一个数组(或类数组对象)的形式提供的参数
语法:
func.apply(thisArg, [argsArray])
demo:
var foo = {name: 'xcc'}function bar (nums) {console.log(this.name, nums) // xcc 20}bar.apply(foo, [20])Function.prototype.apply = function (context, arr) {var context = Object(context) || windowcontext.fn = thisvar resultif (!arr) {result = context.fn()}else {var args = []for (var i = 0, len = arr.length; i < len; i++) {args.push('arr[' + i + ']')}result = eval('context.fn(' + args + ')')}delete context.fnreturn result}
服务热线
顶部
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: http://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878