zoukankan      html  css  js  c++  java
  • js 几个重要的特性

    背景:

    语法借鉴    java    

    函数借鉴    scheme

    原型继承借鉴    self

    正则表达式借鉴    Perl

    1.动态语言

    函数的定义和调用  形参与实参不需要一致

    形参可由 arguments 类数组获取 (形参传入时与其形成映射关系)

    变量之间无阻碍相互转换,不需要指定类型,(前一刻可能是 num ,可以立马变 str fn obj 。。)

    2.解释性语言、跨平台

    js代码运行前夕不需要编译,但是有个预编译过程(上下文环境、变量提升、形参实参统一化、函数声明提升)

    例子:

    function a(){ if(true){ function aa(){console.log('true')} }else{ function aa(){console.log('false')} } aa();}

    部分浏览器执行 a()  -  false  

    函数与变量都存在提升

    不需要先生成文件再转机器码运行,直接解释成0101跑起来

    3.单线程

    代码块之间不相互影响( 如两个 script  之间)

    之上而下运行,看一行执行一行,出现错误立马报错

    4.this指向

    根据 fn 调用场景,分为函数和方法(包括构造函数调用、call和apply的调用),this分别指向window(undefined)、obj(上下文)

    例子:

    var obj={a:function(){ console.log(this) } }

    obj.a()  -  obj

    var obj={a:function(){ return function(){console.log(this)} } }

    obj.a()()   -   window

    var obj={a:function(){ var that=this; return function(){console.log(that)} } }

    obj.a()()    -  obj

    5. 所有函数的方法 call  apply  bind

    都改变 this 指向 (上下文环境)

    call  apply  借用函数

    bind  返回函数体

    可以实现效果:任何函数可以调用任何对象的方法

    6.原型

    过于复杂,后续再议

  • 相关阅读:
    序列化
    python_模块与包
    python_常用内置模块
    python_生成器
    python_文件操作
    你好,mysql
    2017年12月20日 内置对象
    2017年12月17日 ASP.NET 12个表单元素&&简单控件/复合控件
    2017年12月16日 ASP.NET基本用法
    2017年12月14日 LinQ高级查&&Asp.net WebForm Asp.net MVC
  • 原文地址:https://www.cnblogs.com/justSmile2/p/9756368.html
Copyright © 2011-2022 走看看