zoukankan      html  css  js  c++  java
  • js笔记--方法

       A

       在一个对象中绑定函数,称为这个对象的方法:

      例:

       var xiaoming = {
         name: '小明',
         birth: 1990,
         age: function () {
            var y = new Date().getFullYear();
            return y - this.birth;
         }
      };
      xiaoming.age; // function xiaoming.age()
      xiaoming.age(); // 今年调用是25,明年调用就变成26了
    其中在一个方法内部,this是一个特殊变量,它始终指向当前对象,也就是xiaoming这个变量。
    若将函数写在对象外部,单独调用函数则会返回NaN,因为函数相当于全局函数,this指向了window
      例:
        function getAge() {
            var y = new Date().getFullYear();
            return y - this.birth;
        }
    
        var xiaoming = {
            name: '小明',
            birth: 1990,
            age: getAge
        };
        xiaoming.age(); // 25, 正常结果
        getAge(); // NaN


    B apply

    (1)改变this指向
     要指定函数的this指向哪个对象,可以用函数本身的apply方法,它接收两个参数,第一个参数就是需要绑定的this变量,第二个参数是Array,表示函数本身的参数。
     用apply修复getAge()调用:
       例:

         function getAge() {
              var y = new Date().getFullYear();
              return y - this.birth;
        }
    
        var xiaoming = {
             name: '小明',
             birth: 1990,
             age: getAge
        };
        xiaoming.age(); // 25
        getAge.apply(xiaoming, []); // 25, this指向xiaoming, 参数为空

      另一个与apply()类似的方法是call(),唯一区别是:

      • apply()把参数打包成Array再传入;

      • call()把参数按顺序传入。

    
    

      比如调用Math.max(3, 5, 4),分别用apply()call()实现如下:

       Math.max.apply(null, [3, 5, 4]); // 5
       Math.max.call(null, 3, 5, 4); // 5

      对普通函数调用,我们通常把this绑定为null

    (2)动态改变函数的行为

      例:

        想统计一下代码一共调用了多少次parseInt()?

        解题思路:自己重新写一个函数来替换js默认的parseInt()函数    

        var count = 0;
        var oldParseInt = parseInt; // 保存原函数
        window.parseInt = function () {
            count += 1;
            return oldParseInt.apply(null, arguments); // 调用原函数
        };


    摘抄自廖雪峰老师的官方网站
     
  • 相关阅读:
    XP下在控制面板和登录界面中隐藏用户方法
    DataGirdView 单元格限制内容输入参考(按键时的判断)
    VB.Net操作Excel
    VS扩展:标签左置 — productivity power tools
    使用VBS自动删除已经从FTP下载下来的文件
    VB.Net下ComboBox操作收集
    修改网卡IP信息的批处理文件
    VB.NET自定义控件 —— 添加控件自定义属性
    使用关键字对数组进行模糊查找;对一维字符串数组进行排序
    mysql多字段模糊查询
  • 原文地址:https://www.cnblogs.com/lst-315/p/11459782.html
Copyright © 2011-2022 走看看