JSON与事件和BOM

一.JS 中的常用全局属性和方法

Infinity                                     表示正无穷大的数值
NaN                                        非数值
undefined                               未定义的值
eval()                                      计算 JavaScript 代码串,返回结果
isFinite()                                 检验一个值是否是无穷大的数字
isNaN()                                  检验一个值是否是非数字的值
parseFloat()                           从字符串解析一个带小数点的数字
parseInt()                               从字符串解析一个整数
encodeURIComponent()       返回参数的副本,其中某些字符被十六进制的转义序列替换了
decodeURIComponent()       对 encodeURIComponent()转移的字符串解码

 

二.JS 内置对象

Arguments         只在函数内部定义,保存了函数的实参
Array                  数组对象
Data                   日期对象,用来创建和获取日期
Math                  数学对象
String                字符串对象,提供对字符串的一系列操作

     String:

charAt(idx):               返回指定位置处的字符
◦ indexOf(Chr):         返回指定子字符串的位置,从左到右。找不到返回-1
◦ substr(m,n):           返回给定字符串中从 m 位置开始,取 n 个字符,如果参数 n 省略,则意味着取到字符串末尾。
◦ substring(m,n):      返回给定字符串中从 m 位置开始,到 n 位置结束,如果参数 n 省略,则意味着取到字符串末尾。
◦ toLowerCase():     将字符串中的字符全部转化成小写。
toUpperCase():     将字符串中的字符全部转化成大写。
◦ length:                     属性,不是方法,返回字符串的长度。

      Math:

Math.random():     [0,1)的随机数
Math.ceil() :        天花板 大于最大整数,向上取整
Math.floor() :         地板 小于最小整数 String,向下取整

      Date:

//获取
◦ getFullYear()年, getMonth()月(得到的值: 0~11(1 月~12 月)), getDate()日,
◦ getHours()时,getMinutes()分,getSeconds()秒

//设置
◦ setYear(), setMonth(), …
◦ toLoacaleString() (可根据本地时间把 Date 对象转换为字符串,并返回结果)

三.JS 对象

1.对象的创建

JS 创建自定义对象,主要通过三种方式: 字面量形式创建对象、 通过 new Object 对象创建 、 通过 Object 对象的 create 方法创建对象

a.字面量形式创建

var 对象名 = {};//创建一个空的对象
var 对象名 = {键:值,键 2:值 2,...}

var obj = {
    'name' : 'hello',
    age : 12,
    sayHello : function () {
    
    console.log("我是对象中的方法");
        },
   
     courses : {
    javase : 4,
    javascript : 3
        },
    isLike : true,
   
     members : [
        {name : "小红",age : 20},
        {name : "小绿",age : 22},
        {name : "小蓝",age : 27},
        {name : "小黄"}
        ]
    };

b.通过 new Object 对象创建

var 对象名 = new Object();//创建一个空的对象
var obj = new Object();
obj.name = 'zs';
obj.age = 18;
console.log(obj);

c.通过 Object 对象的 create 方法创建对象

var 对象名 = Object.create(null);
var obj = Object.create(null);
obj.name = 'ls'
obj.gender = true
console.log(obj)
var objn = Object.create(obj)
objn.age = 18
console.log(objn)
console.log(objn.gender)

2.对象的序列化和反序列化        

 序列化即将 JS 对象序列化为字符串,反序列化即将字符串反序列化为 JS 对象。 JS 中通过调用 JSON 方法,可以将对象序列化成字符串,也可以将字符串反序列化成对象 。
 

//序列化对象,将对象转为字符串
JSON.stringify(object)

//反序列化,将一个 Json 字符串转换为对象。
JSON.parse(jsonStr)

3.eval():执行函数

eval(“console.log(‘你好’)”);//控制台输出你好

        a.将 json 串转为 json 对象

      1)第一种解析方式: 得到的 json 对象名就是 jsonObj

eval("var jsonObj = " + jsonStr);


      2)第二种解析方式:对象中有多个属性

var jsonObj = eval("(" + jsonStr + ")");


      3)第二种解析方式:对象中只有一个属性
 

eval(jsonStr);

        解析 json 串

var jsonStr = "{'name':'zs', 'pwd':'123'}"; //json 串
//第一种解析方式
eval("var jsonObj = " + jsonStr);
//第二种解析方式:对象有多个属性值
var jsonO = eval("(" + jsonStr + ")");
//第二种解析方式:对象只有一个属性值
var str = "{name:'zs'}";
var namestr = eval(str);

         b.将 json 格式数组字符串解析为 json 格式数组

1)第一种解析方式:

eval("var arrObj = " + arrStr);

2)第二种解析方式:

eval(arrStr);

解析 json 格式数组字符串
 

var arr="[{name:'zs',pwd:'123'},{name:'ls',pwd:'123'},
{name:'ww',pwd:'123'}]";
eval("var arrObj = " + arr);
var arrObj2 = eval(arr);

4.this

this 是 JavaScript 语言的一个关键字。它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。随着函数使用场合的不同, this 的值会发生变化。但是有一个总的原则,那就是 this 指的是,调用函数的那个对象
         

a.在函数中使用 this

在函数中使用 this 属于全局性调用,代表全局对象,通过 window 对象来访问。

function test () {
this.x = 1;
console.log(this.x);
}
test();
console.log(x);//相当于定义在全局对象上的属性
var x = 10;
console.log(x) // 10
function test (){
console.log(this.x) //10
this.x = 1;
console.log(this.x) //1
console.log(this)
}
test()
console.log(x) //1
console.log(this)

b.在对象的方法中使用 this
 

var obj = {
name : '张三',
age : 20,
sayHello : function () {
console.log(this.name)
console.log(this)
}
}
obj.sayHello();

四.事件

事件(Event)是 JavaScript 应用跳动的心脏 ,进行交互,使网页动起来。 当我们与浏览器中 Web 页面进行某些类型的交互时,事件就发生了。事件可能是用户在某些内容上的点击、鼠标经过某个特定元素或按下键盘上的某些按键。事件还可能是 Web 浏览器中发生的事情,比如说某个 Web 页面加载完成,或者是用户滚动窗口或改变窗口大小。通过使用 JavaScript ,你可以监听特定事件的发生,并规定让某些事件发生以对这些事件做出响应。

1.作用

(1)验证用户输入的数据。
(2)增加页面的动感效果。
(3)增强用户的体验度

2.事件中几个名词

事件源: 谁触发的事件
事件名: 触发了什么事件
事件监听: 谁管这个事情,谁监视?
事件处理:发生了怎么办

3.事件类型

JavaScript 可以处理的事件类型为:鼠标事件、键盘事件、 HTML 事件。
 

           Window 事件属性 :针对 window 对象触发的事件(应用到 标签)
           Form 事件 :由 HTML 表单内的动作触发的事件(应用到几乎所有 HTML 元素,但最常用在 form 元素中)
           Keyboard 事件 : 键盘事件
           Mouse 事件 :由鼠标或类似用户动作触发的事件
          Media 事件 :由媒介(比如视频、图像和音频)触发的事件(适用于所有 HTML 元素,但常见于媒介元素中,比如