zoukankan      html  css  js  c++  java
  • 一点思考

    JavaScript函数中的this指代的是全局变量,那构造函数呢?

    测试代码如下:

    1. 当做一般函数调用Cat();

    function Cat(name){
      var arr = Object.getOwnPropertyNames(this);
      console.log(arr.length);               // 722
    }
    
    Cat("Black Cat");

    arr.length=722,我们判定调用一般函数时,this指代的是全局对象。

    2. 当做构造函数调用;

    function Cat(name){
      var arr = Object.getOwnPropertyNames(this);
      console.log(arr.length);
    }
    
    var cat = new Cat("Black Cat");

    array.length = 0, 我们判定调用构造函数时,this指定的是new出来的那个对象。

    总结:对于this值,JavaScript权威指南中是这样表述的——函数调用中,调用上下文(this的值)是全局对象或undefined;方法调用中,调用上下文(this的值)为调用方法的对象。

    构造函数=构造函数.prototype.constructor,因此,构造函数是方法 ~ 

    apply()和call()

    聊天记录

    那为什么apply()方法第一个参数可以传入null 呢?
    是这样  这个函数的第一个参数 如果没指定 就会指定为全局对象

    第一参数是必须传的,不传会报错,想传,但不想给值,所以就传个null.  这个既能通过js语法的验证,又能达到逻辑任务的目的。是一箭双雕的活。

    如果指定,那这个方法的this就是指向那个指定的,如果没有,或传的null,那就是windows,js里边最大的带头大哥就是这货。
     .call表明上是调了一个方法,其实隐式的意思是改变了调用方法后的this指向。这是关键。
     如果搞不懂,就先多写写代码,尝试了解js语言的灵活性,从其它侧面了解this的威力,然后回头在看就不是这么困难了,豁然开朗就是说这种情况的。
     为什么要改变this的指向,为什么能改变?这就是语言本身的灵活。改变之后有什么好处?先写写其它的代码,了解js的全局观。从大处着眼,小处研究。然后回头在来弄。
    call基本就是借方法 你不说谁借的就当是全局对象借的.
     null 或者不传 本质就是Global 浏览器上就是window.

    一点发现

    在函数中,如果函数参数是变量argument时,好像无法直接调用函数,只能使用apply的副作用?

    为什么要使用apply()和call()

  • 相关阅读:
    DNS 服务器的配置与管理
    为什么苹果不再需要谷歌地图?
    flash安装时提示无法安装解决方法
    苹果新ipad支持siri吗?答案是不支持!
    HTTP的 Basic 验证
    笑解优酷土豆合并
    crontab简介
    循环链表应用
    计算表达式
    走迷宫 dfs
  • 原文地址:https://www.cnblogs.com/linxd/p/4437726.html
Copyright © 2011-2022 走看看