函数上下文的判断

一、如果是函数名圆括号执行这个函数,函数的上下文就是window

<script type="text/javascript">
  var a=100;
  function myfun(a,b,c,d){
      console.log(this.a);//100
      var a=200;
      console.log(this.a)//100
      console.log(a); //200
  }
myfun();
</script>

提示:①一定要记住,谁才有this的属性;是函数对象才有this属性;

           ②狭义对象没有函数的上下文之后

二、如果函数作为对象的方法,最后是某一个对象打点调用这个方法,函数的上下文就是这个对象

<script type="text/javascript">
var people={
    ‘name‘:‘小明‘,
    ‘age‘ :18,
    ‘sex‘:‘男‘,
    ‘say‘:function(){
         console.log(this);  //people这个对象
         console.log(this.age); //18
     }
}
people.say();
</script>

注意:如果函数作为对象的方法,而且是某个函数最后打点调用,这个函数的上下文就是这个对象

三、如果函数作为定时器的回调函数,函数的上下文为window

<script type="text/javascript">
  var a=100;
  setInterval(function(){
      a++;
      console.log(this);
      console.log(this.a);
  },1000)

</script>

四、如果函数作为事件的处理函数,函数的上下文就是这个,触发这个事件的这个对象;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style type="text/css">
    *{
        margin:0;
        padding:0;
    }
    p{
        height:20px;
        width:300px;
        background: pink;
        margin:10px 0;
    }
    </style>
</head>
<body>
    <p></p>
    <p></p>
    <p></p>
    <p></p>
</body>
</html>
<script type="text/javascript">
  var p0=document.getElementsByTagName(‘p‘)[0];
  var p1=document.getElementsByTagName(‘p‘)[1];
  var p2=document.getElementsByTagName(‘p‘)[2];
  var p3=document.getElementsByTagName(‘p‘)[3];
  function changeColor(argument) {
            this.style.background = "blue";
        }
       p0.onclick = changeColor;
       p1.onclick = changeColor;
       p2.onclick = changeColor;
       p3.onclick = changeColor;

</script>

提示:事件处理函数的上下文,当谁触发这个事件,函数的上下文就是这个对象

五、如果函数作为数组的元素,函数通过数组枚举出来圆括号执行,函数的上下文是这个数组

<script type="text/javascript">
var arr=[fn,1,2,3,4,5,6,7];
 function fn(){
     console.log(this);
     console.log(this.length);
    // console.log(arguments);
 }
arr[0]();
</script>

时间: 2024-10-09 02:10:12

函数上下文的判断的相关文章

编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成

编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成.“组合 ”的规则如下: 1). str中的每个字母要么来自于part1,要么来自于part2; 2). part1和part2中字母的顺序与str中字母的顺序相同. 例如: "codewars"由"cdw"和"oears"组合而成: s: c o d e w a r s = codewars part1: c d w = cdw part2

S1:函数上下文

函数的上下文是可以变化的,因此,函数内的this也是可以变化的,函数可以作为一个对象的方法,也可以同时作为另一个对象的方法,总之,函数本身是独立的.可以通过Function对象上的call或者apply函数来修改函数的上下文: //定义一个全局的函数对象 function printName(){ return this.name; } //设置printName的上下文为jack, 此时的this为jack print(printName.call(jack)); //设置printName的

函数 - 举例(判断小数)

例:写一个判断小数的函数 需求:判断小数的函数 需求分析: 1.小数点数 .count() 2.按照小数点进行分割 1.98 -> [1,98] 3.正小数:小数点左边是整数,右边也是整数 .isdigit() 4.负小数:小数点左边是以负号开头,但是只有一个负号,右边是整数 def is_float(s): s = str(s) if s.count('.')==1:#小数点个数 s_list = s.split('.') left = s_list[0] #小数点左边 right = s_l

函数上下文

函数上下文 为什么: 确定this的指向谁 怎么做: this指向当前对象,确定当前对象是谁,要看上下文,看看是谁调用的, 点击法,中括号法调用的,this指向对象 obj.fn() obj['fn']()//fn中的this指向obj对象 单独执行方法的,this指向window 事件处理函数不一定是匿名函数,匿名函数只是简写 this指向谁 obj.fn() obj['fn']()//fn中的this指向obj对象 事件源 apply或call 为什么用这2个方法, 给方法的this指向对象

全局上下文GO与函数上下文AO

前几天在网上逛帖子的时候,看了几个Js的题,发现都是关于GO与AO的一些应用,正好自己也重新回顾一下.先看题:(PS:如果有兴趣做做题的小伙伴,可以在下方评论说出自己第一感觉的答案哦) 1. var a = 1; function a(){ console.log("aa"); }; function test(){}; console.log(a); 2. function test(a){ console.log(a); var a = 1; console.log(a); fun

一个简单的JS函数,用于判断文本是否数字

/****************************************************** 判断是否是数字(整数,小数均可,不包括负数)* 2014年10月10日22:38:19*****************************************************/function isNumber(str){    var re = /^([0-9]+)([.]?)([0-9]*)$/;      return re.test(str);} 该函数脱胎于

php 表单校验函数库(判断email格式是否正确、http地址是否合法有效、手机号码是否合法)

/** * 表单校验函数库 */ /** * 判断email格式是否正确 * @param $email */ function is_email($email) { return strlen($email) > 6 && preg_match("/^[\w\-\.][email protected][\w\-\.]+(\.\w+)+$/", $email); } //判断http 地址是否合法 function check_url($url) { return

python内置函数和条件判断

python内置函数: http://daixuan.blog.51cto.com/5426657/1846987 查看python的函数介绍: https://docs.python.org/2/library/ Python17个常用内置模块总结: http://wsyht90.blog.51cto.com/9014030/1845737 一.range简介: range(5)生成的序列是从0开始小于5的整数 >>> range(1, 11) [1, 2, 3, 4, 5, 6, 7

九宫格、函数入门、判断某天为某年的第几天

九宫格 #!/usr/bin/env python#!--coding:utf-8 --#!shenjie :2018/1/28 22:58#[email protected] :shenjie#[email protected]: 2.py#!/usr/bin/env python#-- coding:utf-8 -- class NinePaper(object):def init(self):self.numbers = list()for i in range(1, 10):self.n