发表日期: 2021-05-07 10:14:16 浏览次数:65
尉氏400电话申请开通【尉氏企业网站建设】尉氏微信公众号小程序开发运营价格、尉氏微信公众号APP软件客户端设计运营、尉氏网页页面设计公司费用、尉氏公司网站制作方案流程改版维护大概需要多少钱
尉氏县位于豫东平原,属河南省开封市。东邻通许县、扶沟县,南与鄢陵县、长葛县接壤,西与新郑市交界,北与祥符区、中牟县相连。南北长40.77公里,东西宽43.76公里,总面积约1307.7平方公里,总人口81万人(2000年),中共尉氏县委、尉氏县人民政府驻地:两湖街道。 [1]
尉氏古称“尉州”,是河南省经济管理扩权县,电价趸售优惠县,拥有省政府批准的全省八大特色基地之一的河南省中原纺织工业基地,省认定的尉氏高效农业示范园区。 [2]
2018年,全县完成地区生产总值388亿元,增长8%;一般公共预算收入首次突破20亿元、达到20.6亿元,增长16.8%;税收收入15.96亿元,增长29.9%;城镇和农村居民人均可支配收入预计达到26951元、13911元,分别增长8.3%和8.9%。 [3]
JavaScript作用域、闭包与this
1. JavaScript作用域
2. JavaScript闭包
3. JavaScript中this
3.1 作为普通函数执行
3.2 作为对象方法执行
3.3 作为构造函数执行
3.4 apply等方法中执行
3.5 箭头函数中执行
4. 拓展
4.1 手写bind函数
1. JavaScript作用域
作用域代表了变量合法的使用范围。
JavaScript中作用域:
全局作用域;
函数作用域:函数中声明的变量,会成为函数的局部变量,其作用域是局部的;
块级作用域(ES6新增):
自由变量:一个变量如果在当前作用域内没有被定义,但是被使用了。则向上级作用域一层层寻找(链式作用域),直到找到为止,如果到全局作用域还是未找到,报错:xx is not defined。
2. JavaScript闭包
闭包就是能够读取其他函数内部变量的函数。从本质上而言,闭包就是将函数内部和外部连接在一起的一座桥梁。
闭包的作用:
读取函数内部的变量;
将函数内部变量的值保持在内存中;
使用闭包注意点:
闭包会使函数中变量存储在内存中,内存消耗大,且在IE中可能造成内存泄漏。(可在退出函数之前将不适用的局部变量删除)
闭包会在父函数外部,修改父函数内部变量的值。
自由变量的查找,在于函数定义的地方,向上级作用域查找,而非在函数执行的地方。
匿名函数、回调函数本身也是一个闭包。
阮一峰《学习Javascript闭包(Closure)》
此知识点主要从两个方面考察(抓住自由变量的作用域即可):
函数作为返回值;
函数作为参数;
3. JavaScript中this
this是 JavaScript 语言的一个关键字。
它是函数运行时,在函数体内部自动生成的一个对象,只能在函数体内部使用。
this使用场景:
作为普通函数;
作为对象方法被调用;
作为构造函数被使用;
使用call、apply、bind;
箭头函数;
this取值是函数执行时确定的,而非函数定义时确定的。
3.1 作为普通函数执行
let x = 1
function test(){
console.log(this.x)
}
test() // 1
此时属于全局调用,this代表全局对象。
3.2 作为对象方法执行
function test(){
console.log(this.x)
}
let obj = { x:1 }
obj.f = test
obj.f() //
此时this指向上一级对象
3.3 作为构造函数执行
function test(){
this.x = 1
}
let obj = new test()
console.log(obj.x) // 1
此时this指向新对象。
3.4 apply等方法中执行
apply、call、bind方法是Function对象自带的三个方法,作用是改变函数的this指向。
apply、call、bind方法:
相同点:第一个参数:this要指向的对象,即想要指定的上下文(this关键字的值),其他参数可以传递字符串、数值、布尔值;
apply与call作用一样,仅接受参数方式不一样,call(this,arg1,arg2,...)、apply(this,[arg1,arg2,...]);
bind返回对应的函数,以便稍后调用,其接受后续参数方式与call相同;
3.5 箭头函数中执行
箭头函数没有自己的this值,其所使用的this来自函数作用域链,即父函数的this值,因此其不能用作构造函数。箭头函数中this指向是固定的。
let obj = {
x : 1,
test: function(){
setTimeout(() => {
console.log(this)
})
}
}
obj.test()
代码部分参考博文:
ES6 箭头函数中的 this?你可能想多了(翻译)
4. 拓展
4.1 手写bind函数
Function.prototype._bind = function (){
// 将参数解析为数组
const args = Array.prototype.slice.call(arguments)
// 获取 this (即数组第一项)
const t = args.shift()
const self = this
// 返回函数
return function(){
// 执行原函数,并返回结果
return self.apply(t,args)
}
}
Function.prototype._call = function(obj,...args){
try{
window
}catch(error){
window = null
}
obj = obj || window || global
obj._fun_ = this
let res = obj._fun_(...args)
delete obj._fun_
return res
}
尉氏400电话申请开通【尉氏企业网站建设】尉氏微信公众号小程序开发运营价格、尉氏微信公众号APP软件客户端设计运营、尉氏网页页面设计公司费用、尉氏公司网站制作方案流程改版维护大概需要多少钱
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: https://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878