js-小结02

2-01:类型补充
  ->js中数字是浮点类型,而不是精确类型
  ->在js中双引号和单引号都表示字符串
var str="qwer";   var str='qwer';
  ->数组 (js中下面两种数组方式完全一样)
var arr1={}; 字面值,直接量
var arr2=new Array();
  
2-02:对象
  ->js是面向对象的语言,js中对象就是键值对
  键值对,值可以是数字,字符串,布尔值数据,好比字段
  值也可以是函数,好比方法,键就是变量名或者函数名
  //对象的字面值(Json)
  var o={};//Object对象
  var o={
name:"张三",
//"name":"张三",用双引号引起来当做字符串也是一样的效果
age:18,
sex:"男",
sayHello:function(){
alert("你好")
}
};
alert(o.name);
alert(o.age);
alert(o.sex);
o.sayHello();
  ->关联数组
    就上面的代码例子;
js中支持将对象当做数组使用;
  ->o.name  等价于 o["name"]
  ->o.sayHello()  等价于 o["sayHello"]()
  //中括号内必须为字符串
  详细见代码
  ->this
->在C#中,this表示当前对象(实例)
->js中也是一样
->见代码
02-4:构造方法与对象
  var o1={};
  var o2=new Object();//Object的构造方法
  js中所有的对象类型来自object  (大写O是构造方法,小写o是类型)  
  
  判断变量是否是构造方法创建出来的;
  用instanceof 方法 返回boolean 变量
  alert({} instanceof Object);
  
  ->什么是构造方法
就是普通方法
调用的时候使用new就可以将其作为构造方法来使用
js没有类,直接使用构造方法创建对象 
  ->实现步骤
->创建一个函数
->new这个函数
  ->添加成员
在构造方法中使用 this.成员 进行添加
  ->js支持动态成员
如果一个对象没有定义某个属性,但是希望它有
只需要用 "对象.该属性",那么就可以动态给该对象添加属性了
02-6:类型转换与包装对象
  ->基本类型转换
number,boolean,string
->数字--字符串
string(数字)
数字+""
数字.tostring()
->字符串--数字
字符串-0
Number(字符串)
parseInt()   parseFloat()
->转boolean值
1.if(!!val){ //把一个值否定一次再否定一次,变成布尔值,但是值不变
  }
2.能力判断
if(!o.foo){//如果o没有foo()这个方法,则动态添加一个
o.foo=function(){}
}
  ->包装类型
    基本类型:number,string ,boolean
包装类型:Number,String ,Boolean
     --基本类型不是对象,不具备方法,就单纯是个数据
--在执行诸如"num.tostring()"的时候
编译器会自动根据num生成一个Number类型对象,并调用tostring()方法
将结果返回,然后释放Number对象,等待垃圾回收.
02-7:常用对象
  ->字符串
数组
时间
正则表达式
异常
02-8:异常
02-9:正则表达式
  ->元字符
基本元字符: . [] | ()
限定元字符: + * ? {n} {n,} {n,m}
首尾元字符: ^ $
简写形式: \d \D \w \W \s \S 
  ->在js中,如何创建正则表达式
字面值: var regex =/\d+/;
构造函数:var regex=new RegExp("/\\d++");
  ->匹配
bool Regex.IsMatch(字符串,正则);
boolen 正则表达式对象.test(字符串);
  ->提取
使用方法
像数组的对象,正则表达式对象.exec(字符串);
这个对象的[0]是匹配结果
这个对象的[1],[2]...是各个组
02-11:循环提取
在正则后面加上一个 g 表示全局模式
  ->循环提取使用的方法与刚才的一样,不同的是需要循环调用exec方法
    每次方法匹配一个,循环匹配结束后返回null,然后又从新一轮开始
02-12:正则替换
<string>.replace(正则表达式或字符串,替换为的字符串);
02-13:js代码编写方式
  ->无论是js还是css,都可以卸写在页面中
<script>与<style>可放在页面中的任何一个地方,并且多个与一个,是一样的.
可以在<head>和<body>中写.
  ->一般企业开发为了让浏览器页面显示更加流畅,
<style>或者<link>标签写在前面.
<script>标签写在后面
  ->css使用link引入
    js使用script标签引入
<script type="text/jsvascript" str=""></script>
02-14:DOM文档对象模型
  ->理解DOM概念
  ->知道如何对节点进行增删改
  ->理解事件
02-16:事件是什么
  ->节点就是对象
  ->onload事件,页面中的DOM结构加载完后才会触发这个事件
  ->事件怎么写,事件是个什么东西
->C#事件就是个委托变量(事件的编程概念)
->JavaScript就是方法
->描述性概念
->浏览器的底层也会有很多触发函数的机制
->事件怎么写(要做什么就些什么)

下面情况见代码:
如果有一个a标签,给其添加一个点击事件
1.该点击事件没有返回值或者返回值为true,a标签正常跳转
2.如果该点击事件返回值为false,则a标签不再跳转
if(a.onclick() != null){
var res=a.onclick();
if(res===false){
break; //默认的正常跳转不在继续了
}
}
->如果事件处理函数,返回了false,表示该事件默认的处理忽略不做
02-18:DOM节点添加事件
  ->节点是有类型的(文件节点,元素节点,属性节点)
标准DOM定义中有12中
元素节点  1
属性节点  2
文本节点  3
获得方式  <node>.nodeType
->为节点添加事件的方法;
<node>.onclick=function(){};
如何获得节点:
1. document.getElementById("节点id");(见代码18 1)
  --返回值为节点对象,获得页面中的指定id的节点对象
2. document.getElementsByTagName("标签名");(可以使用"*"意思获得所有节点)
  --返回节点集合,获得页面中所有标签名复合要求的标签.
3. 父节点.getElementsByTagName("标签名");见代码18 3
  --返回节点集合,但是仅仅该父节点下面的所有该标签的节点
修改节点:
所谓修改节点就是修改节点的属性与包含的文本.
1. 获得节点
2. 修改属性的标准方法
1>. <node>.setAttribute("属性名","值");
2>. 文本 <node>.getAttribute("属性名");
3>. DOM-html方法
<node>.属性名 =值;
var v = <node>.属性名


猜你喜欢

转载自blog.csdn.net/wzcyamadie/article/details/80142840