Node.js(七)——HTTP作用域、上下文-创新互联

http源码解读

成都创新互联公司是一家集网站建设,麦盖提企业网站建设,麦盖提品牌网站建设,网站定制,麦盖提网站建设报价,网络营销,网络优化,麦盖提网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

什么是作用域?

作用域和调用函数访问变量的能力有关

作用域分局部作用域和全局作用域,同时作用域往往和变量有关系,

处在局部作用域里面可以访问到全局作用域的变量,反之则访问不到

实例如下:

var globalVariable = 'This is global variable'

function globalFunction(){
	var localVariable ='This is local variable'
	
	console.log('Visit global/local variable')
	console.log(globalVariable)
	console.log(localVariable)
	
	globalVariable = 'This is changed variable'
	console.log(globalVariable)
	
	function localFunction(){
		var innerLocalVariable = 'This is inner local variable'
		
		console.log('Visit global/local/inner variable')
		console.log(globalVariable)
		console.log(localVariable)
		console.log(innerLocalVariable)
	}
	localFunction()
}

globalFunction()

执行结果如下:

Node.js(七)——HTTP作用域、上下文

什么是上下文?

this关键字有关,是调用当前可执行代码的引用

常常代表this变量的值以及它的指向,它决定一个函数怎么被调用,当这个函数作为一个对象的方法被调用时this总是指向调用这个方法的对象

代码如下:

第一种

var pet = {
	words:'...',
	speak:function(){
		console.log(this.words)
		console.log(this === pet)
	}
}

pet.speak()

执行结果如下:

Node.js(七)——HTTP作用域、上下文

第二种:

function pet(words){
	this.words = words
	console.log(this.words)
	
	//这个this指向顶层的global对象
	console.log(this ===  global)
}

pet('...')

执行结果如下:

Node.js(七)——HTTP作用域、上下文

第三种:

function Pet(words){
	this.words = words
	this.speak = function(){
		console.log(this.words)
		//此时的this指向的谁?cat对象
		console.log(this)
	}
}

var cat = new Pet('Miao')
cat.speak()

执行结果如下:

Node.js(七)——HTTP作用域、上下文

提出上下文是为了引出函数所拥有的两个方法:call和apply,可以改变上下文执行对象,可以在自定义上下文中执行函数,作用是一样的

只是用法有区别

call函数需要一个参数列表,apply允许你传递一个参数作为数组,具体的是作用呢是调用一个对象的方法以另一个对象替换当前对象,其实就是更改当前对象的this指向的内容,标准一点就是:以某个方法当做指定某个对象的方法被执行

示例如下:

var pet = {
	words:'...',
	speak:function(say){
		console.log(say+' '+this.words)
	}
}

//pet.speak('Speak')
var dog = {
	words:'Wang'
}

//让dog也能有speak方法
pet.speak.call(dog,'Speak')

运行结果如下:

Node.js(七)——HTTP作用域、上下文

利用call和apply可以方便的实现继承

function Pet(words){
	this.words = words
	this.speak = function(){
		console.log(this.words)
	}
}

function Dog(words){
	Pet.call(this,words)
	//Pet.apply(this,arguments)
}

//通过new生成实例对象
var dog = new Dog('Wang')
dog.speak()

运行结果如下:

Node.js(七)——HTTP作用域、上下文

这就是call和apply的用法

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享名称:Node.js(七)——HTTP作用域、上下文-创新互联
网页路径:http://ybzwz.com/article/dcgscd.html