一、字面量{}或new方式建立物件
//字面量
var obj =
}//new關鍵字建立物件
var obj =
newobject()
; obj.sname =
"lce"
; obj.
eat=
function()
//字面量建立物件 或 new object() 建立物件
//缺點 : 建立多個同類物件時 **會重複
//建立多個同類物件時,**會重複 此種方案只適用於一次建立乙個物件
var stu1 =
}//alert( stuobj.study() );
var stu2 =
newobject()
; stu2.name =
"lily"
; stu2.
study
=function()
var stu3 =
newobject()
; stu3.name =
"lily"
; stu3.
study
=function()
工廠模式
//工廠模式好處 :解決了多個同類物件建立時 **重複的問題
//工廠模式缺點 :1--一般物件都是通過new關鍵字建立的 而工廠模式建立的物件只是通過函式呼叫得來的 物件建立方式不規範
// 2-- 不能確定某個物件屬於哪乙個建構函式
//instanceof 判斷乙個物件是否屬於某乙個類 返回布林值
//用法 : 物件 instanceof 建構函式
function
students
(name,tel)
//建立乙個學生
var stu1 =
students
("小八",20
);console.
log( stu1 instanceof
object
)
建構函式寫法(例項寫法)
//建構函式特點 : 為了和普通函式區分 建構函式的命名方式一般是大駝峰
// 建構函式中的this 指向建構函式new出來的物件
// 建構函式中的屬性 叫做 例項屬性 方法叫做 例項方法
//建構函式優點 : 通過new關鍵字建立物件 物件建立規範
// 可以確定某個物件屬於哪乙個類
//建構函式的缺點 : 多個同類物件建立時 方法會被重建 空間不共享
function
animal
(name,age)
}function
student
(name,tel)
var stu1 =
newstudent
("jack"
,"13233333333");
//第乙個物件
var a1 =
newanimal
("二哈",3
);//alert( a1.sleep() );
//第二個物件
var a2 =
newanimal
("二黑",2
);//alert( a2.sleep() );
//確定 stu1 和 a1 不屬於同一類
console.
log( stu1 instanceof
student);
//true
console.
log( a1 instanceof
student);
//false
//物件a1和a2都屬於animal類 具有共同的方法 sleep
alert
( a2.sleep == a1.sleep )
;
原型寫法
//原型 : 將屬性和方法寫在建構函式的外面
// 原型優點 : 多個同類物件建立時 方法不會被重建 空間共享
//原型缺點 : 屬性值都相同
function
animal()
animal.prototype.name =
"二哈"
;//原型屬性
animal.prototype.
sleep
=function()
var a1 =
newanimal()
;var a2 =
newanimal()
; console.
log( a1.name , a1.
sleep()
);console.
log( a2.name , a2.
sleep()
);console.
log( a1.sleep == a2.sleep )
;
混合寫法
//混合 :屬性寫成 例項屬性
// 方法寫成 原型方法
function
animal
(name,age)
animal.prototype.
sleep
=function()
var a1 =
newanimal
("二哈",3
);var a2 =
newanimal
("二黑",3
);
原型上寫乙個陣列去重
array.prototype.
norepeat
=function()
}return brr;
}var arr =
newarray(1
,2,3
,4,4
,4,4
);//原陣列
console.
log( arr.
norepeat()
);
原型物件 prototype
1. 所有的建構函式都有乙個prototype屬性,這個屬性就叫做原型物件
2. 所有的建構函式new出來的物件都有乙個原型物件 實現 : 物件.__proto__
3. 建構函式.prototype === 例項物件.__proto__ 叫做原型物件
4. 在原型物件上建立的方法是共享的。
原型模式的執行流程
首先在例項上查詢,如果有例項屬性或方法 就返回 ,如果沒有,就去原型上查詢 如果有就返回
如果原型上沒有對應的屬性或方法,就去最外層的object.prototype上查詢 如果有就返回,沒有返回undefined
原型中的關鍵字
function
animal()
animal.prototype.name =
"lixin"
var animal =
newanimal()
; console.
log(animal.prototype.
isprototypeof
(animal)
) console.
log(animal instanceof
animal
) console.
log(animal.
hasownproperty
("name"))
console.
log(
"name"
in animal)
/*console.log(animal.__proto__.__proto__.name)
測試某個物件是否屬於某個類的方法 isprototypeof()
語法: 建構函式.prototype.isprototypeof(物件): 判斷乙個物件是否指向了該建構函式的原型物件,
可以使用isprototypeof() 方法來測試 結果為boolean型別 同 instanceof
delete: 刪除例項屬性
語法: delete 物件.例項屬性
hasownproperty() 是否包含該例項屬性, 包含返回true, 否則返回false
語法: 例項物件.hasownproperty("例項屬性") in 是否存在該屬性( 原型或例項中)
語法: "屬性" in 物件例項*/
找個地方記錄坑
1 需要乙個ajax物件 xmlhttprequest 2 建立和伺服器的連線 通過 open 方法 三個引數 第乙個引數 請求資料的方式 get post get和post區別 get 路徑傳值 資料量小 post 非路徑傳值 資料量大 第二個引數 路徑 url 第三個引數 非同步true 同步f...
找個地方記錄坑
doctype html utf 8 title head 兄弟多個1 li 兄弟多個2 li 兄弟多個3 li 兄弟多個4 li 兄弟多個5 li 兄弟多個6 li ul body html 確定建構函式 特效名稱 確定建構函式的屬性 要操作的元素 確定建構函式的方法 特效中的具體功能實現 變色 ...
好吧,只好找個自己High的地方
最近混了幾天知乎,因為說王垠的文章是辣雞,結果被封了一天。一看大談社會責任之類的,就把這個文章歸類於 辣雞。乙個偉大的公司,應該為社會創造實在的,新的價值,而不是想方設法 節省 什麼勞動力開銷,讓人失業!想一下都覺得可怕,我創造乙個公司,它最大的貢獻就是讓成千上萬的人失業,為貪得無厭的人節省 勞動力...