zoukankan      html  css  js  c++  java
  • 阮一峰的网络日志有感

    http://www.ruanyifeng.com/blog/javascript/

    1.闭包

    我看过了之后的理解,闭包就是函数中的函数,为啥这么写呢,平时我们可以获取全局变量的值,现在我要获取函数里面的值,怎么获取呢,就是通过函数中在写一个函数(这个函数可以获取父函数的变量),然后return出去这个函数,就可以在外部拿到这个函数里面的变量了啊,闭包耗内存,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

      var name = "The Window";
    
      var object = {
        name : "My Object",
    
        getNameFunc : function(){
          return function(){
            return this.name;
          };
    
        }
    
      };
    
      alert(object.getNameFunc()()); //The Window
    

      为啥是window 呢,因为

    this对象是在运行时基于函数执行环境绑定的,在全局函数中,this=window,在函数被作为某个对象的方法调用时,this等于这个对象。

    但是匿名函数的执行环境是全局性的,这里getNameFunc 方法return了一个匿名函数,这个匿名函数中this指向window

    解决方法还是有的,我们可以把外部作用域的this传递给匿名函数

      var name = "The Window";
    
      var object = {
        name : "My Object",
    
        getNameFunc : function(){
          var that = this;
          return function(){
            return that.name;
          };
    
        }
    
      };
    
      alert(object.getNameFunc()());My Object

    学到了匿名函数执行环境是全局性的指向window

    2.js设计语言的糟粕

    JavaScript 的 == 判断符隐含着各种隐式转换,对于这种设计上的坑,最好的避免方式就是不使用,没有必要为语言的糟粕买单。

    ==和!=会自动进行类型转换

    ‘true’ ==true -->false

    参考规则https://www.cnblogs.com/wl521/p/7423852.html

    这是设计js语言的锅,为了避免这个锅,以后写的项目全部用 === 和!== 类型和值都得相等

    3.构造函数模式(http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html

    这篇文章我单独抽离出去写吧

    链接就是:

    阮一峰的网络日志有感(2)原型

  • 相关阅读:
    Html 表单表格 form table
    JavaWeb -- 服务器传递给Servlet的对象 -- ServletConfig, ServletContext,Request, Response
    JavaWeb -- Servlet运行过程 和 细节
    调用DLL中的过程和函数
    调用DLL中的过程和函数
    动态载入 DLL
    动态载入 DLL
    静态载入 DLL
    DLL的加载和调用
    静态载入 DLL
  • 原文地址:https://www.cnblogs.com/myfirstboke/p/11357159.html
Copyright © 2011-2022 走看看