• js常用


    1.获取滚动条到网页头部的高度:

      Var top=document.documentElement.scrollTop+document.body.scrollTop;

      document.documentElement.scrollTop和document.body.scrollTop的作用相同:都是获取滚动条到网页头部的高度,二者相加是为了更好的兼容

    2.获取页面的高度

      Var textHeiht=$(document).height();//获取的是整个页面的高度

      Var visibleHeight=$(window).height();//获取的是浏览器所能看到的那部分页面高度

    3.call 和 apply方法:可以将call和apply看作某个对象的方法,通过调用方法的形式间接调用函数

      A)如:function testFun(){

          return this.a+this.b

          }

        var o={a:1,b:2};

        testFun.call(o);//可理解为,o调用testFun方法;结果为3

        testFun.apply(o);//结果为3

      B)call和apply方法的第一个实参为null或undifined的情况

        var a=10,b=20;

        function testFun(){

          return this.a+this.b;

        }

        testFun.call();//结果为30

        testFun.apply();//结果为30

      C)call和apply方法的区别

        function testFun(x,y){

          return this.a+this.b+x+y;

        }

      var o={a:1,b:2};

      testFun.call(o,10,20);//call方法传入多个参数,逗号隔开即可;结果为33

      testFun.apply(o,[10,20]);//apply方法将第一个实参后的所有参数都放入一个数组中,结果为33

    4.eval(“(”+data+”)”)使用eval对json进行解析的时候,json字符串通产被包含在一个小括号里:eval(“(”+data+”)”)

      这回括号会让解析器强制将小括号解析成表达式而不是代码块

    5.函数的声明和函数表达式的区别:

       A.函数的声明会在任何表达式被解析和求值之前被解析和求值,即使声明在代码的最后一行,它也会在同作用域内第一个表达式之前被解析/求值

       B.声明函数在条件语句内虽可以使用,但没有标准化,即不同的环境会有不同的执行结果,所以这种情况最好使用函数表达式

       C.函数的声明:

        a.function add(x,y){

          return x+y;

        }

        b.(function (){

          function add() {}

        })()

      D.函数的表达式:

        a.var bar=function boo(){}

        b.new function boo(){}

      E.函数命名表达式即函数表达式有自己的名字:如var bar=function boo(){}

    6.声明变量:

      Var cnblogs=cnblogs || {}

      确保cnblogs存在的时候直接使用,不存在的时候直接赋值为{}

    7.prototype原型使用方法

      A.var Calculator=function(decimalDigs,tax){

        this.decimalDigs=decimalDigs;

        This.tax=tax;

      }

      通过给Calculator的prototype属性赋值字面变量来设定Calculator对象的原型

        Calculator.prototype={

        add:function(x,y){

          return x+y;

        },

        subtract:function(x,y){

          return x-y;

        }

      }

      通过new Caluclator对象后,就可以调用add方法

      B.在赋值原型的时候使用function立即执行的表达式来赋值

        Calculator.prototype=function(){

          add=function(x,y){

          return x+y;

        },

        subtract=function(x,y){

          return x-y;

        }

      }

      通过new Calculator对象后就可以调用add方法了

      C.分步设置每个原型的属性

        var BaseCalculator=function(){

          this.number=2;//为每一个实例都声明一个小数位数

        }

      //使用原型给BaseCalculator扩展两个属性

       BaseCalculator.prototype.add=function(x,y){

        return x+y;

       }

      BaseCalculator.prototype.subtract=function(x,y){

        return x-y;

      }

      D.将BaseCalculator对象设置到真正的Calculator原型上

        var BaseCalculator=function(){

          this.decimalDigits = 2;

        }

      BaseCalculator.prototype={

        add:function(x,y){

          return x+y;

        },

        subtract:function(x,y){

          retrun x-y;

        }

      };

      var Calculator=function(){

        This.tax=5;//为每个实例都声明一个税收数字

      }

      Calculator.prototype=new BaseCalculator();//即Calculator的原型指向BaseCalculator的原型实例上,目的是让Calculator集成它的add和subtract方 法,无论创建多少个Calculator实例,它们的原型都指向同一个实例

      如果不想让Calculator访问BaseCalculator构造函数声明的属性:

      Calculator.prototype=BaseCalculator.prototype;

      E.重写原型

        calculator.prototype.add=function(x,y){

          return x+y+3;

        }

        var cal=new Calculator();

        alert(cal.add(3,1));

       F.闭包:闭包是一系列函数(在ECMAScript中是函数),并且静态保存所有父级的作用域。通过这些保存的作用域来搜寻到函数中的自由变量。

        示例://全局变量x

          var x=10;

          //全局函数

          function foo(){

            console.log(x)

          }

        (function(funArg){

          //局部变量x

          var x=20;

          //我们使用foo函数的scope保存的是全局变量x,不是调用者的局部变量x

          funArg();//返回结果是10,而不是20

          })(foo)//将foo作为一个funarg传递下去

          该例可以看出使用静态作用域是闭包的一个强制性要求

        G.this指针:

        a.this是和执行上下文环境息息相关的一个对象,this是执行上下文环境的一个属性而不是 某个变量对象的属性

        b.在一个函数上下文中,this由调用者提供,由调用函数的方式决定。如果调用括号()左边是引用类型的值,this将设为引用类型的base对象,在其他情况下(与引用类型不同    的任何其他属性),这个值为null,当this为null的时候,其值会被隐式的转换为global对象

  • 相关阅读:
    iOS-runtime-objc_setAssociatedObject(关联对象以及传值)
    iOS-runtime-根据类名推送到任意控制器,且实现属性传值
    程序员必须知道的git托管平台
    iOS第三方地图-百度地图中心点定位
    nested pop animation can result in corrupted navigation bar
    iOS KVC,KVO
    iOS第三方地图-百度地图定位的封装
    iOS第三方地图-百度地图常用功能使用(POI搜索,地理正反编码,定位,添加标注)
    MJRefresh插件引起的错误
    OC开发_Storyboard——AutoLayout
  • 原文地址:https://www.cnblogs.com/zijinyouyou/p/6490854.html
Copyright © 2020-2023  润新知