JS第一天

  • 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) 反序列化

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    千机楼阅读 1,012评论 0 4
  • 什么是 JavaScript 语言? JavaScript 是一种轻量级的脚本语言。所谓“脚本语言”(script...
    oWSQo阅读 523评论 0 1
  • 再次回到学校本就让我感到极度孤单恐惧,曾经熟悉的同学朋友都已经离开,所有的时刻都只有自己一个人去面对,面对这空荡荡...
    墨子涵阅读 171评论 3 2
  • 草长莺飞二月天,拂堤杨柳醉春烟。儿童散学归来早,忙趁东风放纸鸢。 阳春三月,正是放风筝的好时节。今天天气格...
    中学生马小兑作文集阅读 214评论 4 6
  • 弟弟最近的模仿能力与日俱增。 1.吃的模仿能力 姐姐在吃桂圆干,先咬开桂圆皮,再拿出桂圆肉来。 坐在游戏垫子上的弟...
    师爷是枚美男子阅读 93评论 0 0