ES5基礎(chǔ)部分
javascript是區(qū)分大小寫的弱類型語(yǔ)言串塑;
- es的基本類型是:undefined ,null ,boolean ,number ,string
- typof是檢測(cè)基本類型的:undefined,boolean,number,string,object,function
- js不能用來(lái)計(jì)數(shù)運(yùn)算,
var n1=0.1;var n2=0.2; console.log(n1+n2!=0.3)
- NaN不與任何值相等衅澈,isNaN在接收到值后會(huì)嘗試將其轉(zhuǎn)換為數(shù)值,否則是ture;
isNaN("test");//console.log(true)
- 數(shù)值的轉(zhuǎn)換方法:Number(),parseInt(),parseFloat();//parseInt("")返回NaN,Number("")返回0
- 引用類型:object,array,date,regexp,function
數(shù)組
一般方法有:Array.isArray(),join(),split(), posh()/pop(),unshift()/shift() , indexof,lastIndexof
會(huì)改變?cè)瓟?shù)組方法:reverse(),sort(),splice()
返回新數(shù)組:concat(),slice(start,end);
迭代方法:every() , some() , filter() , map(), forEach(), reduce(function(prev,cur,index,arr)),reduceRight()
函數(shù)(function)
函數(shù)屬性:arguments,callee熔酷,caller是調(diào)用當(dāng)前函數(shù)的函數(shù)引用
改變上下文環(huán)境:apply(),bind(),call();
字符串string
方法:concat(),slice(),substring(start,end) ,substr(start,count),indexof,lastIndexof, trim();
Math.ceil()向上缝左,Math.floor()向下, Math.round()四舍五入卖局, Math.random()隨機(jī)值
面向?qū)ο?/h5>
Object.defineproperty(o,name,config),Object.defineproperties()
config包括:configurable,enumerable,writable,value,
訪問(wèn)器屬性:getter(),setter(),configurable,enumerable
以上用來(lái)控制對(duì)象屬性的行為(底層)
創(chuàng)建對(duì)象:
- 工廠模式:創(chuàng)建了多個(gè)相似對(duì)象斧蜕,但無(wú)法識(shí)別對(duì)象
function Person(name,age){
var o=new Object();
o.name=name;
o.age=age;
return o;
}
- 構(gòu)造函數(shù)模式:可識(shí)別對(duì)象,但其每個(gè)對(duì)象方法是獨(dú)立的
function Person(name,age){
this.name=name;
this.age=age;
this.sayname=function(){return this.name}
}
- 原型模式: 解決了方法共用砚偶,但都會(huì)取得相同的屬性
function Person (name,age){
}
Person.prototype={}
Object.hasOwnProperty只能檢測(cè)實(shí)例屬性批销,in操作符可以檢測(cè)實(shí)例屬性和原型屬性
4.組合模式(省...)
繼承:
- 原型鏈:sub.prototype=new super();
- 借用構(gòu)造函數(shù):
function Sub(){
Super.call(this);
}
組合式繼承...最大問(wèn)題是會(huì)2次調(diào)用超類型的構(gòu)造函數(shù)
- 原型式繼承: Object.create()就是這種洒闸,對(duì)其原型進(jìn)行復(fù)制
function Foo(o){
function T(){}//過(guò)渡函數(shù)
T.prototype=o;
return new T();
}
- 寄生式繼承
function cc(origin){
var clone=Foo(origin);
clone.sayname=fucntion(){}//對(duì)其進(jìn)行擴(kuò)展
return clone
}
5.寄生組合繼承:解決組合式繼承的問(wèn)題
function NN(sub,super){
var pro=Foo(super.prototype);
pro.constructor=sub;
sub.prototype=pro;
}//只復(fù)制其原型上面的屬性,而sub.prototype=new super()則會(huì)都復(fù)制包括實(shí)例屬性
super.call(this);