ECMAScriptJS第一上

  • ECMAScript js的正统语法
  • DOM(html每一个标签对应一个对象)
  • html(控制内容)+css(控制样式)+js(控制行为)

html+js

  • 嵌入式

      <head>
        <script>
          //js代码
        </script>
      </head>
    
  • 导入(保证了html和js代码解耦)

       <head>
        <script src=""></script>
      </head>
    

注释

两种

  • //

  • /*

    */

标识符

出于字母,数字,下划线,$,不能够因为数字开头,不克也要字

数据类型(数据最小的单位)

弱类型语言

  • 核心数据列
  • undefined;
    var a;//a的数据类型undefined
  • null;
    var b=null;//b的数据类型null
    var result=typeof b; //object
  • number;
    var a=10;
  • boolean;
    var a=true;
  • string;
    “” , ”;

检测变量所属的数据类型
var sesult =typeof 变量名

提问框
var result = prompt(“提问内容”);
alert(“提示信息”);
console.log();

主干数据列中的换

Undefiend

相似不考虑任何基本数据类型转换为undefined

Null类型

一般不考虑任何核心数据类型转换为null

Boolean类型

任何类型转换为Boolean:
则boolean类型的取值只发生半点独,但是ECMAScript中装有的类型的值都生
暨当下简单只Boolean值等价格的值

Boolean        true          false
String        非空字符串       ""
Number        任何非0非NaN      0和NaN
Undefined                 undefined    
Null                         null

例如:

   Boolean("");        //false
   Boolean(0);        //false
   Boolean(NaN);    //false
   Boolean(null)    //false
   Boolean(undefined)    //false
   Boolean("briup");    //true
   Boolean(1);        //true

Number

isNaN(para) 当参数para不是数值的时光回来true

数值转换

Number()
使换的值是null,undefined,number,boolean
    Number(true);    //1
    Number(false);    //0
    Number(10);    //10 如果是数字值,原样输出
    Number(null);        //0
    Number(undefined);    //NaN
一旦是字符串:
    Number("123");  //如果仅包含数值,转换为对应的数值
    Number("234.1");//解析为对应的小数
    Number("+12.1");//首位为符号位,其余为为数值,转换为对应的数值
    NUmber("1+2.3");//NaN 符号位出现在其他位置,解析为NaN
    Number("0xa");  //如果仅包含十六进制格式,转为为对应的十进制的值
    Number("010");    //注意!不会当做八进制被解析,结果为10
    Number("");    //空字符串被转换为0
    Number("123ac");//包含其他字符: NaN
    Number(" 12");    //12
parseInt()
  • 一经换的值是null,undefined,number,boolean

      parseInt(true);        //NaN
      parseInt(false);    //NaN
      parseInt(null);        //NaN
      parseInt(undefined);    //NaN
      parseInt(10);        //10 如果是整数值,原样输出
      parseInt(10.3);        //10 如果是小数,舍去小数点一级后面的内容
    
  • 只要是字符串:

      parseInt("123");  //123;如果仅包含数值,转换为对应的数值
      parseInt("234.1");//234;小数点后面的数值省略
      parseInt("+12.1");//12; 首位为符号位,其余为为数值,转换为整数,结果为
      parseInt("0xa");  //10; 如果仅包含十六进制格式,转为为对应的十进制的值
      parseInt("010");  //10; 注意!不会当做八进制被解析,结果为10
      parseInt("");      //NaN;空字符串被转换为NaN
      parseInt("1+2.3");//1;    如果首位为数值,依次向后解析,找到连续的数值,直到
                  遇到第一个非数值的,将之前获取的数值转换为Number返回
      parseInt("123ac");//123;   
    
parseFloat()
    与parseInt()类似,
    但是会将小数转换为对应的小数 

String

toString() 转化为字符串

包装器类 number -> Number
       var num = 10;
       num.toString();  "10"
       num.toString(2); "1010"
       num.toString(8); "12"
       num.toString(16);"a"

注意:
       null ,undefined 没有toString() 方法
       null.toString()        //报错 TypeError: null has no properties
   undefined.toString();    //报错 TypeError: undefined has no properties

String() 用来将随机数据类型转换为字符串

       String(null)        "null" 
       String(undefined);     "undefined"

复杂数据列 Object

ECMAScript中的对象其实就是一组数据和功能的集合。

创建Object实例:

new Object() => {}; 创建一个空对象

new Object();

    var person = new Object();
    person.name = "briup";
    person.age = 22;

采用对象字面量表示法

     不同的属性之间用','分割,属性名和属性值之间用':'分割
    var person = {
        name : "briup",
        age : 22
    };

拜对象属性

接触表示法,右侧必须是坐性名称命名的粗略标识符

person.name

中括号表示拟,中括号丁务必是一个计算结果吗字符串的表达式

可透过变量访问属性

    var a = "name";
    person[a];    //既person["name"]
    person["first name"]

万一属性名中蕴藏语法错误的字符,或者属于性名使用的凡重要字或保留字,
好应用中括号 person[“first name”]

去除属性

delete只是断开了性能和宿主对象的沟通,而非会见操作属性被的性质,并且delete
无非见面去自发生总体性,不能够去继承属性。在销毁对象时,为了防内存泄露,遍历属
性中的性质,依次删除所有属性。

  • 语法:delete 属性访问表达式
  • 事例:delete stu.name //删除学生对象吃之name属性

检测属性

in 检测某属性是否是某目标的从来性能或者是持续属性

    "toString" in student

hasOwnProperty()检测给定的特性是否是目标的打生性能,对于持续属性将赶回false

    var o = {
        x:1
    }
    o.hasOwnProperty("x");    //true, x 为o的自有属性
    o.hasOwnProperty("y");    //false,o 中不存在属性y
    o.hasOwnProperty("toString");    //toString为继承属性
 propertyIsEnumerable() 检测给定的属性是否是该对象的自有属性,并且该属性是可枚举的
    通常由JS代码创建的属性都是可枚举的,但是可以使用特殊的方法改变可枚举性。
    student.propertyIsEnumerable("toString")    //false 不可枚举

Object属性及方式

Object
类型所所有的其它性质和方式吧一如既往是为任何对象吃,任何对象继承于Object对象

Object中常用之法门:

  • hasOwnProperty(propertyName);
    用于检查给定的属性名是否是目标的由发生总体性,
  • toString(); 返回对象的字符串表示
  • valueOf(); 返回对象的字符串,数值,布尔值的意味。

  • propertyIsEnumerable(propertyName);
    用于检查给定的特性在脚下目标实例中是否存在
  • constructor: 保存用户创建当前目标的函数
  • isPrototypeOf(object); 用于检查传入的目标是否是原型
  • toLocaleString(); 返回对象的字符串表示,该字符串与实施环境的地区对应

靶序列化

对象序列化是指用目标的状态转换为字符串,也足以反序列化,将字符串还原也目标
函数,RegExp,Error对象,undefined值未可知序列化和倒序列化。

  • JSON.stringify(obj)
    将对象序列化为Json字符串,只能序列化对象可是枚举的由发生总体性。
  • toJSON()
    Object原型中莫toJSON方法,但是对如履序列化的靶子的话
    JSON.stringify()方法会调用toJSON方法,如果要序列化的目标被在这
    术,则调用,返回值即经常序列化的结果,而不是固有对象。
  • JSON.parse(jsonStr) 反序列化