【面向過(guò)程】
? ? 每一個(gè)過(guò)程都會(huì)去做
【面向?qū)ο蟆?/h1>
?思想费彼,寫(xiě)程序的方法
1瓣喊、什么是對(duì)象
都是獨(dú)立的個(gè)體
2癞埠、什么是面向?qū)ο?/p>
咱們只關(guān)心怎么使用鸽粉,不去關(guān)系他的內(nèi)部是如何實(shí)現(xiàn)的
arr.push()
3斜脂、怎么創(chuàng)建一個(gè)對(duì)象
var arr=[];
arr.length? 屬性
arr.push()? 方法
對(duì)象身上都有屬性和方法
屬性/變量
變量:自由的個(gè)體,沒(méi)有約束
屬性:依附于對(duì)象身上触机。
方法/函數(shù)
函數(shù):自由的個(gè)體帚戳,沒(méi)有約束
方法:依附于對(duì)象身上。
this:當(dāng)前觸發(fā)事件的對(duì)象(元素)
當(dāng)前的方法屬于誰(shuí)儡首,this就是誰(shuí)
var first=[];
first.a=1;
first.show=function(){
alert(1);
}
var oDate=new Date();
var oDate1=new Date();
原材料
數(shù)組
json
事件對(duì)象
var obj=new Object();? 造一個(gè)空白的對(duì)象
new的問(wèn)題
new Date();
new Array();
new Function();
new JSON();
new Object();
show()
普通函數(shù)
構(gòu)造函數(shù)
首字母大寫(xiě) 主要是和普通函數(shù)做區(qū)分
構(gòu)造函數(shù)也是函數(shù),主要是因?yàn)楣δ芷鹆藗€(gè)名字
加new有什么特點(diǎn)
1片任、他會(huì)在函數(shù)內(nèi)部自動(dòng)創(chuàng)建一個(gè)空白對(duì)象,并且把this指向?qū)ο?/p>
2蔬胯、最后他會(huì)把this(對(duì)象)蚂踊,自動(dòng)返回出去
面向?qū)ο蟮奶攸c(diǎn)
封裝
多態(tài)
繼承
原型
面向?qū)ο螅‥S6之前真正的面向?qū)ο螅?/p>
function CreateObject(name,age){
//構(gòu)造函數(shù)身上加屬性
this.name=name;
this.age=age;
}
//原型身上加方法
CreateObject.prototype.showName=function(){
return this.name
}
var p1=new CreateObject('小明',13);
alert(p1.showName())
例子:
1、arr.chaAt()
2笔宿、str.trim();? //去除字符串收尾空格
reg=/^\s+|\s+$/g;
3犁钟、oDate.getCnDay()? // 返回的是 ’星期一‘
原型:
1、面向?qū)ο?/p>
2泼橘、擴(kuò)展系統(tǒng)函數(shù)
類(lèi):在js中類(lèi)就是構(gòu)造函數(shù)涝动,作用就是造對(duì)象,他就像一個(gè)模子
實(shí)例:通過(guò)new這種構(gòu)造函數(shù)返回的結(jié)果炬灭,也就是造出來(lái)的對(duì)象
面向?qū)ο筇匦裕?/p>
封裝(前端不用太考慮)
把一個(gè)事物的核心抽象出來(lái)
繼承 ***
在ES6之前的繼承醋粟,都是通過(guò)prototype來(lái)實(shí)現(xiàn)的
多態(tài)(前端不用太考慮)
一個(gè)孩子繼承了多個(gè)親人的特性
面向?qū)ο笾械囊恍┬〖?xì)節(jié)小問(wèn)題(不常用,都在面試?yán)锍霈F(xiàn))
typeof 檢測(cè)數(shù)據(jù)類(lèi)型
instanceof 檢測(cè)一個(gè)物體的數(shù)據(jù)類(lèi)型 檢測(cè)一個(gè)東西和另一個(gè)有沒(méi)血緣關(guān)系
constructor 某個(gè)東西是不是通過(guò)某個(gè)構(gòu)造器造出來(lái)了
可以理解為直接的父親
題:
第一大題
alert(typeof Date)? //function
alert(typeof Function); //function
alert(Function instanceof? Object) //true
alert(Object instanceof Function)//true
alert(Function instanceof Function)//true
alert(Object instanceof Object) //true
第二道題
alert(arr instanceof Array); //true
alert(Array instanceof Function)//true
alert(arr instanceof Function) //false
第三題
Object.prototype.a=12;
var arr=[1,2,3];
//alert(arr.a)? //12
//var a=5;
//var a=new Number(5)
//alert(a.a);
//alert(a instanceof Object);
//var str='abc';
var str=new String('abc')
//alert(str.a)
alert(str instanceof Object)
簡(jiǎn)寫(xiě)的基本類(lèi)型重归,Object不認(rèn)米愿,除非new出來(lái)
包裝類(lèi)
第四題(this)
function show(){
alert(this)
}
//show();? //window
//new show();//object
var arr=[1,2,3];
arr.show=show;
//arr.show();//1,2,3
//new arr.show();//object
document.onclick=show;//document
//new document.onclick();//object
//setTimeout(show,100);//window
//setTimeout(arr.show,100);//window
//setTimeout(document.onclick,200); //一上來(lái)是window,點(diǎn)擊的時(shí)候是document
//setTimeout(new document.onclick,200);//一上來(lái)object,點(diǎn)擊的時(shí)候是document
setTimeout(new arr.show,100)//object
this是有優(yōu)先級(jí):
new -> object
定時(shí)器 -> window
事件 ->? 事件對(duì)象
方法 ->? 當(dāng)前方法的對(duì)象
其他
面向?qū)ο髮?xiě)法:
1鼻吮、把所有的變量放到構(gòu)造函數(shù)中
2育苟、把所有的函數(shù)放到原型上
3、始終保證this在構(gòu)造身上
包一層把正確的this放進(jìn)去