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可用于引用实例。如果该实例不包含所要查找的属性,则继续在原型上查找。

  • 相关阅读:
    mysql索引
    mysql事务
    MySQL注入问题
    【CUDA并行编程之四】矩阵相乘
    【CUDA并行编程之三】Cuda矢量求和运算
    【Cuda并行编程之二】Cuda Memory Hierarchy_Cuda内存层次结构
    【Cuda并行编程之一】二分查找的探究以及Cuda的简单实现&&相关面试题介绍
    CUDA编程接口:共享存储器实现矩阵相乘
    CUDA学习
    CUDA从入门到精通
  • 原文地址:https://www.cnblogs.com/adhehe/p/9786606.html
Copyright © 2011-2022 走看看