原型:
原型是對象的模板,可以利用原型創(chuàng)建對象,原型中定義了一些公有屬性和方法,被創(chuàng)建出來的對象共享其屬性和方法
? ? // 創(chuàng)建原型
? ? var Person = function(name){
? ? ? ? this.name = name;
? ? };
? ? // 原型的方法
? ? Person.prototype.sayHello = function(){
? ? ? ? console.log(this.name+",hello");
? ? };
? ? // 實(shí)例化創(chuàng)建新的原型對象
? ? var person1 = new Person("zhangsan");
? ? var person2 = new Person("lisi");
? ? // zhangsan,hello
? ? person1.sayHello();新的原型對象會共享原型的屬性和方法
? ? // lisi,hello
? ? person2.sayHello();新的原型對象會共享原型的屬性和方法
原型對象之間不能共享方法
document的增刪改查 :
查
? 增:
1. 如果要添加一個(gè)<p>元素,需要先創(chuàng)建一個(gè)p元素:
var para = document.createElement("p");
2. 為p元素創(chuàng)建一個(gè)文本節(jié)點(diǎn)
var node = document.createTextNode("這是一個(gè)新的斷落");
3. 然后將文本節(jié)點(diǎn)放入p元素中
para.appendChild(node);
4. 最后在一個(gè)已存在的元素里添加新的元素p
var element? = document.getElementById("div1");
element.appendChild(para);
5. 如果要添加到某個(gè)特定的地方,需要先獲取這個(gè)元素
var child = document.getElementById("p1");
然后將增加的元素放到child的前面
element.insertBefore(para, child);
? 刪
1. 移除一個(gè)元素前需要知道該元素的父元素
var parent = document.getElementById("div1");
var child = document.getElementById("p1");
然后再刪除child元素
parent.removeChild(child);
(一個(gè)父元素可以用child.parentNode)
? 改(替換):
1. 可以用replaceChild()方法來替換元素
parent.replaceChild(para,child);
? ? ? ? ? ? ? ? ? ? ? ? ? ? 新? ? 舊
2. 如何改變某個(gè)元素的屬性
document.getElementById("image").src="landscape.jpg";
3. 如何改變某個(gè)元素的css樣式
document.getElementById("p2").style.color="blue";
? 查:
1. 通過標(biāo)簽名
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正則表達(dá)式從無到有
? ? 首先是正則表達(dá)式是由字符序列組成的搜索模式
? 正則表達(dá)式的創(chuàng)建:
var reg = new Regexp("正則表達(dá)式","搜索模式"
var reg = /ac/I
? 通過字符類[]可以衍生出范圍類
1. /[a-z]/? 任意小寫字母
2. /[A-Z]/? 任意大寫字母
3. /[a-Z]/? 任意字母
4. /[0-9]/? 任意數(shù)字
? 預(yù)定義類
字符取反:[^]
.? ? [^\r\n]? 除了回車,換行之外的所有字符
\d? [0-9]? ? ? 數(shù)字字符
\D? [^0-9]? ? 除了數(shù)字字符
\s? [\t\n\x0B\r]? ? 空白符
\S? [^\t\n\x0B\r]? ? 除了空白符
\w? [a-zA-Z_0-9]? 數(shù)字,字母,下劃線
\W? [^a-zA-Z_0-9]? 除了數(shù)字,字母,下劃線
? 選擇和分組
1. 選擇 符號|
var reg=/[a|b]/;//檢查字符串是否含有a或者b,是為true
2. 分組 符號()
reg=/^(ch)/;//字符串是否以ch為開頭,是為true
? 量詞
{n}? 重復(fù)出現(xiàn)n次
{m,n}? 重復(fù)出現(xiàn)m-n次
{m, }? 重復(fù)出現(xiàn)m次以上
+? ? ? ? ? 至少出現(xiàn)一次,{1, }
*至少出現(xiàn)0次或者多次
?? ? ? 出線0次或1次,{0,1}
? 指定匹配位置
^? 匹配字符串的開始/^…/
$? 匹配字符串的結(jié)尾/ …$/
\b? 單詞邊界
\B? 除了單詞邊界
? 字符串的常用方法
? split()
? ? ? ? ? 1.方法將會根據(jù)正則表達(dá)式去拆分字符串
2.不指定全局匹配也會全部拆分
結(jié)果以數(shù)組的形式輸出
? search()
1.搜索字符串中是否含有指定內(nèi)容
2.搜索到結(jié)果將會返回第一次出現(xiàn)的索引,無則返回-1
3.不會全局匹配,只會返回第一個(gè)
? match()
1.提取出字符串中符合條件的內(nèi)容
2.默認(rèn)不是全局匹配,可以設(shè)置全局匹配
3.返回結(jié)果封裝到數(shù)組中
? replace()
1.將字符串中的指定內(nèi)容換替換為新的內(nèi)容
2.參數(shù)一:被替換的內(nèi)容;參數(shù)二:新的內(nèi)容
3.默認(rèn)替換第一個(gè),可全局匹配
str.replace(/a/g,"%");//將任意字母全部替換,輸出1%1%2%
this指向問題
? 對象方法中的this指向方法所屬的對象
? 函數(shù)中的this指向函數(shù)的所屬者
? 單獨(dú)使用this指向全局對象window
? 嚴(yán)格模式下函數(shù)中使用this,this為undefined
? 在HTML事件句柄中指向接收事件的HTML元素
? all()和apply()可以改變this所指向的對象
數(shù)組遍歷的幾種方法
? for循環(huán)
? for循環(huán)的優(yōu)化,把[array].length的數(shù)值存入一個(gè)變量,避免重復(fù)獲取array的長度
? 弱化for循環(huán):
for(int I;array[i]!=0;i++){
}
? foreach
array.foreach(funtion(e){
}
)
? for in遍歷
? for of遍歷
? map遍歷:
array.map(function(n){
}
)