码迷,mamicode.com
首页 > Web开发 > 详细

06慕课网《进击Node.js基础(一)》作用域和上下文

时间:2018-05-27 14:45:28      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:local   改变   cat   上下   函数   inf   log   AC   不能   

作用域

调用函数访问变量的能力

//全局变量
var globalVariable = ‘This is global variable‘
//全局函数
function globalFunction(){
    //局部变量
    var localVariable =  ‘This is local variable‘
    console.log(‘visit gloabl/local variable‘)
    console.log(globalVariable)
    console.log(localVariable)

    globalVariable = ‘this is change variable‘

    console.log(globalVariable)
    //局部函数
    function loaclFunction(){
        //局部变量
        var innerLocalVariable = ‘this is inner local variable‘
        console.log(‘visit gloabl/local/innerLocal variable‘)
        console.log(globalVariable)
        console.log(localVariable)
        console.log(innerLocalVariable)
    }
    //作用域内可访问局部函数
    loaclFunction()

}
//在全局不能访问局部变量和函数
globalFunction()

技术分享图片

上下文

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

this指向函数拥有者,只能在函数中使用

this指向构造函数
var pet = {
    words:‘..‘,
    speak:function(){
        console.log(this.words)
        console.log(this==pet)
    }
}

pet.speak()

技术分享图片

this指向全局对象
function pet(words){
    this.words = words
    console.log(this.words)
    console.log(this==global)
}
//this指向了全局global对象
pet(‘..‘)

技术分享图片

this指向实例对象
function Pet(words){
    this.words = words
    this.speak = function(){
        console.log(this.words)
        console.log(this)
    }
}

var cat = new Pet(‘Miao‘)
cat.speak();

技术分享图片

使用call和apply改变上下文引用对象

this指向引用方法的对象
var pet = {
    words:‘..‘,
    speak:function(say){
        console.log(say + ‘ ‘ + this.words)
    }
}

pet.speak(‘haha‘)

技术分享图片

使用call-apply
var pet = {
    words:‘..‘,
    speak:function(say,free){
        console.log(say + ‘ ‘ + free+ ‘ ‘+ this.words)
    }
}

var dog={
    words:‘wawa‘
}

pet.speak.call(dog,‘haha‘,‘lala‘)
pet.speak.apply(dog,[‘haha‘,‘lala‘])

技术分享图片

使用call和apply方便实现继承
function Pet(words){
    this.words = words

    this.speak = function(){
        console.log(this.words)
    }
}
//Dog继承Pet,拥有了Pet的speak方法
function Dog(words){
    Pet.call(this,words)
}

var dog = new Dog(‘wawa‘)

dog.speak()

技术分享图片

06慕课网《进击Node.js基础(一)》作用域和上下文

标签:local   改变   cat   上下   函数   inf   log   AC   不能   

原文地址:https://www.cnblogs.com/-beauTiFul/p/9095696.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!