原型:
原型是对象的模板,可以利用原型创建对象,原型中定义了一些公有属性和方法,被创建出来的对象共享其属性和方法
// 创建原型
var Person = function(name){
this.name = name;
};
// 原型的方法
Person.prototype.sayHello = function(){
console.log(this.name+",hello");
};
// 实例化创建新的原型对象
var person1 = new Person("zhangsan");
var person2 = new Person("lisi");
// zhangsan,hello
person1.sayHello();新的原型对象会共享原型的属性和方法
// lisi,hello
person2.sayHello();新的原型对象会共享原型的属性和方法
原型对象之间不能共享方法
document的增删改查 :
查
Ø 增:
1. 如果要添加一个<p>元素,需要先创建一个p元素:
var para = document.createElement("p");
2. 为p元素创建一个文本节点
var node = document.createTextNode("这是一个新的断落");
3. 然后将文本节点放入p元素中
para.appendChild(node);
4. 最后在一个已存在的元素里添加新的元素p
var element = document.getElementById("div1");
element.appendChild(para);
5. 如果要添加到某个特定的地方,需要先获取这个元素
var child = document.getElementById("p1");
然后将增加的元素放到child的前面
element.insertBefore(para, child);
Ø 删
1. 移除一个元素前需要知道该元素的父元素
var parent = document.getElementById("div1");
var child = document.getElementById("p1");
然后再删除child元素
parent.removeChild(child);
(一个父元素可以用child.parentNode)
Ø 改(替换):
1. 可以用replaceChild()方法来替换元素
parent.replaceChild(para,child);
新 旧
2. 如何改变某个元素的属性
document.getElementById("image").src="landscape.jpg";
3. 如何改变某个元素的css样式
document.getElementById("p2").style.color="blue";
Ø 查:
1. 通过标签名
var y=getElementsByTagName("p");
2. 通过类名
var x=document.getElementsByClassName("intro");
3. 通过id名
var x=document.getElementById("intro");
4. 通过name属性名
<input name="checkbox" type="checkbox" />box3
var inputArray = document.getElementsByName("checkbox");
js正则表达式从无到有
Ø 首先是正则表达式是由字符序列组成的搜索模式
Ø 正则表达式的创建:
var reg = new Regexp("正则表达式","搜索模式"
var reg = /ac/I
Ø 通过字符类[]可以衍生出范围类
1. /[a-z]/ 任意小写字母
2. /[A-Z]/ 任意大写字母
3. /[a-Z]/ 任意字母
4. /[0-9]/ 任意数字
Ø 预定义类
字符取反:[^]
. [^\r\n] 除了回车,换行之外的所有字符
\d [0-9] 数字字符
\D [^0-9] 除了数字字符
\s [\t\n\x0B\r] 空白符
\S [^\t\n\x0B\r] 除了空白符
\w [a-zA-Z_0-9] 数字,字母,下划线
\W [^a-zA-Z_0-9] 除了数字,字母,下划线
Ø 选择和分组
1. 选择 符号|
var reg=/[a|b]/;//检查字符串是否含有a或者b,是为true
2. 分组 符号()
reg=/^(ch)/;//字符串是否以ch为开头,是为true
Ø 量词
{n} 重复出现n次
{m,n} 重复出现m-n次
{m, } 重复出现m次以上
+ 至少出现一次,{1, }
*至少出现0次或者多次
? 出线0次或1次,{0,1}
Ø 指定匹配位置
^ 匹配字符串的开始/^…/
$ 匹配字符串的结尾/ …$/
\b 单词边界
\B 除了单词边界
Ø 字符串的常用方法
• split()
1.方法将会根据正则表达式去拆分字符串
2.不指定全局匹配也会全部拆分
结果以数组的形式输出
• search()
1.搜索字符串中是否含有指定内容
2.搜索到结果将会返回第一次出现的索引,无则返回-1
3.不会全局匹配,只会返回第一个
• match()
1.提取出字符串中符合条件的内容
2.默认不是全局匹配,可以设置全局匹配
3.返回结果封装到数组中
Ø replace()
1.将字符串中的指定内容换替换为新的内容
2.参数一:被替换的内容;参数二:新的内容
3.默认替换第一个,可全局匹配
str.replace(/a/g,"%");//将任意字母全部替换,输出1%1%2%
this指向问题
• 对象方法中的this指向方法所属的对象
• 函数中的this指向函数的所属者
• 单独使用this指向全局对象window
• 严格模式下函数中使用this,this为undefined
• 在HTML事件句柄中指向接收事件的HTML元素
• all()和apply()可以改变this所指向的对象
数组遍历的几种方法
• for循环
• for循环的优化,把[array].length的数值存入一个变量,避免重复获取array的长度
• 弱化for循环:
for(int I;array[i]!=0;i++){
}
• foreach
array.foreach(funtion(e){
}
)
• for in遍历
• for of遍历
• map遍历:
array.map(function(n){
}
)