面向?qū)ο螅?br>
對(duì)象:女朋友 貓 ,電視()
萬(wàn)物皆對(duì)象
var oDate=new Date();
oDate.getTime();
面向?qū)ο螅褐还苡茫托?。不用關(guān)心內(nèi)部實(shí)現(xiàn)
var arr=[];
arr.push(1);
對(duì)象:
1.用對(duì)象
2.寫(xiě)對(duì)象 $$$
對(duì)象怎么構(gòu)成:
1.屬性
變量
變量,是自由的;屬性,有所屬者mmm
2.方法
函數(shù)
------------------------------------
this:當(dāng)前發(fā)生事件
當(dāng)前方法屬于誰(shuí),this就是誰(shuí)
*默認(rèn)全局屬于window
*js本身就有很多bug
作者就自己承認(rèn)
布萊登·艾克 java
----------------------------------
js
試著更改一些bug
嚴(yán)格模式:
'use strict'
嚴(yán)格模式的好處:
1.修復(fù)了局部函數(shù)this的問(wèn)題
2.不允許在if/for等里面定義函數(shù)
3.干掉了with(公用代碼){}
4.定義變量必須加var
作用域范圍:
1.最大不超出script標(biāo)簽
2.可以放在函數(shù)里面
3.放在文件里面
*在以后寫(xiě)代碼的時(shí)候都要加上
造對(duì)象:造人
屬性:物體特征
方法:物體行為
內(nèi)置系統(tǒng)對(duì)象:(不要用系統(tǒng)的內(nèi)置對(duì)象)
Date();
arr
reg
json
js中造一個(gè)空白對(duì)象:
var obj=new Object();
首字母大寫(xiě)的函數(shù)統(tǒng)稱(chēng):構(gòu)造函數(shù)
*為了和普通函數(shù)做一個(gè)區(qū)分
工廠模式:
原料->加工->出廠
*new都干了什么
1.幫咱們創(chuàng)建了一個(gè)空白對(duì)象,并且賦值給了this
2.加了new 之后,系統(tǒng)自動(dòng)幫你返回return
*new后面跟的都是函數(shù)(構(gòu)造函數(shù))
.red{background-color:red;}
<div class='red'></div>
<div class='red'></div>
<div class='red' style="background:green;"></div>
<div class='red'></div>
<div class='red'></div>
原型:
prototype
給一類(lèi)添加?xùn)|西
原型用處:擴(kuò)展系統(tǒng)方法
面向?qū)ο螅?br>
1.構(gòu)造函數(shù)里面添加屬性
2.方法添加到原型上
面向?qū)ο蟮姆Q(chēng)呼:
類(lèi)(構(gòu)造函數(shù)) 構(gòu)造對(duì)象相當(dāng)是個(gè)模子
對(duì)象(實(shí)例):new 構(gòu)造函數(shù) 有實(shí)際功能,模子產(chǎn)出東西
面向?qū)ο蟮奶卣鳎?br>
封裝
{
抽
*繼承
多態(tài)
繼承:遺傳 子級(jí)可以繼承父級(jí)
******任何東西都是對(duì)象 Object
檢測(cè)一個(gè)對(duì)象的具體類(lèi)型:
instanceof
:自己,自己的父級(jí),自己的父級(jí)的父級(jí)......
現(xiàn)在就想找它自己的親爹:
constructor: 構(gòu)造器/構(gòu)造函數(shù)
只檢測(cè)父級(jí)
js中詭異的事情:
去看詭異事情的例子
基本數(shù)據(jù)類(lèi)型:
字符串
數(shù)字
布爾
fn
//obj
undefined
var a=1;
包裝類(lèi):(java借鑒過(guò)來(lái)的)
var a=new Number(5);
面向?qū)ο罄锩姘裻his搞明白,基本就會(huì)了
this:
this的優(yōu)先級(jí):(多包一層失效)
new->object
定時(shí)器->window
事件->事件對(duì)象
方法->當(dāng)前對(duì)象
其他
繼承:
子級(jí)繼承父級(jí)功能
給父級(jí)添加一個(gè)功能,子級(jí)默認(rèn)就有
function CreatePerson()
function Person()
function Worker()
fn W(){
this.name=''
this.age=''
this.job=''
}
繼承:
屬性:
改變this指向:
.call(this指向,參數(shù)1,參數(shù)1···);
.apply:跟call的功能一樣
.apply(this指向,[參數(shù)1,參數(shù)1···]);
//arguments代表所有的實(shí)參參數(shù)
.apply(this指向,arguments);
方法:
1.子級(jí).prototype=父級(jí).prototype;
2.for(var name in Person.prototype){
循環(huán)復(fù)制
}
3.Worker.prototype=new Person();
Worker.prototype.constructor=Worker;
繼承:
1.屬性
父級(jí)的構(gòu)造函數(shù).apply(this,arguments);
2.方法
子級(jí)的構(gòu)造函數(shù).prototype=new 父級(jí)構(gòu)造();
子級(jí)的構(gòu)造函數(shù).prototype.constructor= 子級(jí)構(gòu)造;
特稱(chēng):
封裝:抽
繼承:子類(lèi)可以繼承父類(lèi)的所有東西
多態(tài):js里面沒(méi)有意義
類(lèi):構(gòu)造函數(shù)
對(duì)象(實(shí)例):有真正功能
強(qiáng)制改變this:
.call
.apply
屬性:
父類(lèi).call(this,cs1,cs2);
父類(lèi).apply(this,arguments);
方法:
子類(lèi).prototype=new 父類(lèi)();
子類(lèi).prototype.constructor=子類(lèi);
變量名沖突:
1.封閉空間()()
(function(){})();自執(zhí)行匿名函數(shù)、閉包
(function(){}())
~function(){}()
2.模塊化
3.面向?qū)ο?br>
4.命名空間
規(guī)劃整個(gè)網(wǎng)站
公用函數(shù)
var BaiduWeb={
pc:{
pub:{}//公用函數(shù)
Effect:{}//各種效果
},
mobile:{}
};