JavaScript(一)

heacsing 发布于

JavaScript

加油

20200604

function name(argument){code;return retval};

  1. 函数是全局的,在定义前即可调用;
  2. 没有return,默认返回undefined;
  3. 函数名重复会产生覆盖;
  4. 函数读到第一个return后即返回,之后的语句会被完全无视;

    调用函数:

  5. 通过名称调用;
  6. 通过全局对象window调用;

    参数:

  7. 多余参数会被无视
  8. 实现默认参数的方式:
    1
    2
    3
    arg=arg||default val;
    if(arg===undefined)arg=default val;
    arg=arg===undefined?0:y;
  9. 函数的所有参数构成arguments[]对象
    • 使用arguments实现可变参数

      用var关键字重载局部变量;直接使用会声明为全局变量。在工程中全部使用var来声明变量

一些全局函数:

  1. parseInt(string,radix):返回字符串转换成radix进制的整数

  2. parseFloat(string,):返回字符串转换成的浮点数

  3. isFinite(var):若是无限大或NaN则返回False

  4. isNaN(var):若是NaN则返回真

  5. encodeURI(string):返回URI编码后的地址

    • 若要对所有ASCII码标点符号都进行编码,适宜使用encodeURIComponent()
  6. decodeURI(string):返回URI解码后的地址

    • 同上;
  7. escape(string):返回全平台适用的URI编码一般适用的字符串

  8. unescape(string):返回解码的字符串

  9. Number(object):将对象转换为数值?

    • 如果是Date对象,会返回1970年1月1日到当前时间的毫秒数

特殊形式的函数

  • JavaScript中函数也是一种数据类型,它有两个特性
  1. 匿名函数,不命名的函数:
    1. 将函数表达式存储在变量中,变量也可以作为一个函数使用
    2. 可以将匿名函数作为参数传递给其他函数(像函数指针一样
    3. 通过匿名函数完成一些一次性任务

20200605

自定义对象

  1. 对象字面量法

    1
    2
    3
    4
    5
    var obj={
    key:value(string),
    key1:value1
    //建议将key都用" "括起来
    }
  2. 通过new Object()创建对象

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        var obj= new Object();//创建空对象
    var arr=new Array();//创建新数组对象
    var date=new Date();//创建Date对象
    var reg=new RegExp();//创建正则表达式
    var obj=new Create(arguments);//通过自定义构造函数创建对象
    ```
    3. 通过Object.create(key:value)创建对象

    #### 对象的属性与方法
    1. 通过小数点或者方括号调用对象属性值
    2. 动态读取

    var x=key
    console.log(obj.x);//undefined
    console.log(obj[x]);//success
    console.log(obj[‘x’]);//undefined

    1
    2
    3
    4
    3. 添加/修改属性:作为等式左值进行赋值即可实现
    4. delete实现删除属性
    + 只会断开连接,若属性是对象,delete后仍可直接访问
    5. for/in遍历

    for(var p in obj){

     console.log(p);//取出的是值

    }

    1
    6.对象中的方法

    var obj={

     name:function(){}

    }

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    ### 20200607
    #### 对象的结构
    + 属性特性
    1. writable
    2. enumerable
    3. configurabel
    4. getter
    5. setter
    + 对象特性
    1. prototype
    2. class
    3. extensiblity
    + 原型链:obj->obj.prototype->object.prototype->null。所有对象都继承于Object父对象
    1. 通过(bool)'key' in obj 检测是否有某个属性或方法,会向上到原型中去查找;
    2. 通过obj.hasOwnProperty('key') 方法查找对象本身是否拥有该属性
    3. 通过Object.create({key:value})创建的对象,实质是创建了一个对象的原型,即对上述对象 obj.hasOwnProperty('key')==false
    #### 属性的特性
    + 简介
    1. writable:属性的值能否再修改,默认为true
    2. enumerable:能否通过for/in访问到该属性,直接在对象上定义的属性默认为true
    3. configurable:能否通过delete删除并重新定义属性,能否修改这些特性
    + 可枚举的:
    1. 通过obj.propertyIsEnumerable('key')来判断是否为可枚举的自有属性
    2. 通过Object.getOwnPropertyNames(obj)获取所有**自有**属性的名称

    ### 20200609
    #### 属性特性描述
    + 通过Object.defineProperty(obj,prop,descriptor)来精确添加或修改对象的属性,通过该方法创建属性的默认配置均为false
    + 通过Object.defineProperties(obj,{
    'key':{
    value:''
    writable:
    emnumerable:
    configurable:
    }
    })
    #### 属性的特性
    + "__proto__"属性指向了对象的父对象,将之赋值为null来使对象没有继承的属性
    + configurable主要限定的是Object.defineProperty()函数能否再修改属性的特性,其中也包括value,即属性的值;特别的,configurable:false的属性的writable特性可以从true被修改为false
    + 通过Object.getOwnPropertyDescriptor(obj,'key')来得到属性的特性状态

    ### 20200613
    #### 对象的特性
    + 三个对象的特性:
    1. prototype:指向一个**对象**
    2. class:一个标示对象**类**的字符串
    3. extensible flag:标明是否为可扩展
    + 通过obj.isPrototypeOf(obj)来检测对象是否是参数对象的原型(或处于参数对象的原型链中)

    ### 20200626
    #### 事件!!
    + 定义:发生在文档或浏览器窗口内的交互
    + 事件的属性:
    1. 事件类型
    2. 事件目标
    3. 事件处理/监听程序
    4. 事件对象
    5. 事件传播
    + 脚本模型

    <input …… id=’btn’/>

    1
    + DOM2模型:实时添加事件和删除事件

    ```