zoukankan      html  css  js  c++  java
  • JavaScript基础概念之----this关键字

    创建函数时,系统会(在后台)创建一个名为 this 的关键字,它链接到运行该函数的对象。

    var person = {
        name:'adhehe',
        age:23,
        getName:function(){
         // return person.name
    return this.name } } //person.getName() 输出adhehe

    this 值会被传递给所有函数,其值基于在运行时调用函数的上下文。

    var a = 1;
    var o = { a:2 }
    var func = function(){
        return this['a']
    }
    
    o.func = func;
    
    o.func() //输出2
    func() //输出1

    在嵌套函数中使用this关键字,引用head对象(即window)

    var o = {
        func1:function(){
            console.log(this) //输出o
            
            var func2 = function(){
                console.log(this) //输出window,从此处开始this都是window对象
    
                var func3 = function(){
                    console.log(this) //输出window
                }()
            }()
        }
    }

    o.func1()

    当匿名函数在函数内部调用时,匿名函数内的this值将是对head对象的引用(即window)

    var o = {
        func1:function(func){
            func(); //输出window
            console.log(this) //输出o
        }
    }
    
    o.func1(function(){
        console.log(this)
    })

    可以简单地在父函数中使用作用域链来保留对 this 的引用。

    var o = {
        func1:function(){
            var that = this;
            console.log(this) //输出o
            
            var func2 = function(){
                console.log(that) //输出o
    
                var func3 = function(){
                    console.log(that) //输出o
                }()
            }()
        }
    }
    
    o.func1()

    使用 new 关键字调用函数时,this 值引用实例本身。

    原型方法内的this关键字引用构造函数实例,即在prototype对象中的方法内部使用this关键字时,this可用于引用实例。如果该实例不包含所要查找的属性,则继续在原型上查找。

  • 相关阅读:
    Photoshop
    你会为了钱出售自己的个人资料吗?
    [ElasticSearch] 空间搜索 (一)
    hdu1584 A strange lift (电梯最短路径问题)
    Android API Guides---OpenGL ES
    Qt 推断一个IP地址是否有效
    bzoj1670【Usaco2006 Oct】Building the Moat 护城河的挖掘
    集成学习1-Boosting
    微信开发模式之自己定义菜单实现
    人件札记:开放式的办公室环境
  • 原文地址:https://www.cnblogs.com/adhehe/p/9786606.html
Copyright © 2011-2022 走看看