zoukankan      html  css  js  c++  java
  • 第四章(变量、作用域、内存问题)

    基本类型的值在内存中固定大小的空间,引用类型的值是对象,保存在堆内存中

    闭包的理解:

    闭包的应用场景:

    1. setTimeout/setInterval
    2. 回调函数(callback)
    3. 事件句柄(event handle)
    4. 保护函数内的变量安全:如迭代器、生成器。
    5. 在内存中维持变量:缓存数据、柯里化。
    6. 保护内部变量
    7. 防止污染上层作用域
    8. 避免全局变量的污染
    9. 私有成员的存在
    10. 模块化代码---jq插件
    JS中, this的值取决于调用的模式, 而JS中共有4中调用模式:
    
    1. 方法调用模式
    当一个函数被保存为对象的一个属性时, 我们称它为一个方法, 当一个方法被调用时, this指向该对象, 如:
    var obj = {
    value: 1,
    getValue: function() {
    alert(this.value);
    }
    };
    obj.getValue(); // 输出1, 此时的this指向obj
    注意: 该模式中, this到对象的绑定发生在方法被调用的时候.
    
    2. 函数调用模式
    当一个函数并非一个对象的属性时, 它被当作一个函数来调用, 此时的this指向全局对象(window), 如:
    window.value = 1;
    function getValue() { alert(this.value); }
    getValue(); // 输出1, 此时的this指向window.
    
    3. 构造器调用模式
    结合new前缀调用的函数被称为构造器函数, 此时的this指向该构造器函数的实例对象, 如:
    function show(val) {
    this.value = val;
    };
    show.prototype.getVal = function() {
    alert(this.value);
    };
    var func = new show(1);
    func.getVal(); // 输出1
    alert(func.value) // 输出1
    // 从上面的结果, 可以看出, 此时的this指向了func对象.
    
    4. apply/call调用模式
    apply和call方法可以让我们设定调用者中的this指向谁, 如: 
    var fun = function(str) {
    this.status = str;
    }
    fun.prototype.getStatus = function() {
    alert(this.status);
    }
    var obj = {
    status: "loading"
    };
    fun.prototype.getStatus.apply(obj); // 输出"loading", 此时getStatus方法中的this指向了obj
  • 相关阅读:
    旅行锦囊
    生活智慧
    育儿锦囊
    新婚置办
    软件开发心得
    64位sql server2005安装
    Struts学习心得
    Spring学习心得
    Oracle补习班第十天
    Python----文件操作
  • 原文地址:https://www.cnblogs.com/mr-pz/p/5906111.html
Copyright © 2011-2022 走看看