一:function型別
每個函式都是function型別的例項。而且函式是物件,因此函式名實際上是指向函式物件的指標,不會與某個函式繫結
function
add(a,b)
var sum = function
(a,b) ;
*解析器會率先讀取函式宣告並加到執行環境中,函式宣告提公升。
*函式表示式則必須等到解析器執行到他所在的**行才會真正被解析。因為函式位於初始化語句中,執行所在行前變數名是不會儲存對函式的引用。
*要訪問函式的指標而不是執行函式的話,去掉函式名後面的()。
alert(add(1)); //3
alert(sum(1,2)); //報錯
function
add(a)
var sum = function
(a,b) ;
var otheradd = function
(add,10)
*每個函式包含兩個屬性:length和prototype
function
sum(num1,num2)
function
callsum
(num1,num2)
function
(num1,num2)
*emcascript5定義了乙個方法bind()。這個方法會建立乙個函式的例項,其this會被繫結到傳給bind()函式的值。
window.color = "red";
var0 = ;
function
saycolor
() var objsay = saycolor.bind(o);
objsay(); //blue
二:基本包裝型別
emcascript還提供三個特殊的引用型別:boolean、number、string
*這些型別和其他引用型別相似,但同時也具備與各自基本型別相對應的特殊行為。實際上,每當讀取乙個基本型別值得時候,後台會建立乙個對應的基本包裝型別的物件,從而讓我們能夠呼叫一些方法來操作這些資料。
例:
var s1 = "some text";
var s2 = s1.substring(2);
/*第二行**等用於*/
var s1 = new
string("some text"); //建立string型別的乙個例項
var s2 = s1.substring(2); //在例項上呼叫指定的方法
s1 = null; //銷毀這個例項
區別:
var s1 = "text";
s1.color = "red";
alert(s1.color); //undefined
1、boolean型別
var falseobj = new
boolean(false); //布林表示式中所有物件都會被轉化為true
alert(falseobj && true); //true
var falsevalue = false;
alert(falsevalue && true); //false
alert(typeof falseobj); //object
alert(typeof falsevalue); //boolean
alert(falseobj instanceof
boolean) //true
alert(falsevalue instanceof
boolean) //false
2、number型別
*tostring(x):傳遞乙個表示基數的數,告訴他是幾進製,返回乙個字串形式
*tofixed(x):會按照指定的小樹位返回數值的字串表示
*toexponential():返回以指數表示法表示的數值字串
3、string型別
var str = "hello";
alert(str.charcodeat(1)); //101 --> e的字元編碼
alert(str.concat("world")); //helloworld --> 連線乙個或多個字串,返回新字串
alert(str.indexof("o")); //4 --> 從乙個字串找子字串
alert(str.tolowercase()); //hello
alert(str.touppercase()); //hello
vae text = /el/;
alert(str.match(text).index); //match()只接受乙個引數
alert(str.replace(text,"abcde")) //habcdelow
var str2 = " helo world ";
alert(str.trim()); //建立乙個字串副本,刪除前置及字尾的所有空格,並返回結果
var str3 = "hello world";
alert(str3.slice(3,7)); //(開始位置,結束位置)
alert(str3.substring(3,7)); //(開始位置,結束位置)
alert(str3.substr(3,7)); //(開始位置,長度)
三、單體內建物件
alert(encodeuri(uri)); //用於整個uri,不會對本身uri特殊字元如"/"編碼
alert(encodeuricomponent(uri)); //用於某一段
"*eval()方法。
像乙個完整的ecmascript解析器,只接受乙個引數,既要執行的js字串
var msg = "hello";
eval("alert(msg)");
eval("var str = 'world'"); //宣告不會提前
alert(str); //world
*window物件
不猛訪問global物件,但是在全域性作用域中宣告的所有變數和函式都成為了window物件的屬性
四、math物件
//找陣列中最大或最小值
var value = [1,2,3,4,56,7,89,10];
var num = 25.4;
alert(math.ceil(num)); //26 -->向上捨入
alert(math.round(num)); //25 -->四捨五入
alert(math.floor(num)); //25 -->向下捨入
alert(math.random()); // 0-1的乙個隨機數
JavaScript高階程式設計
ecmascript有5種基本型別資料 另外還有一種複雜的資料型別 typeof就是用來檢測變數的資料型別的,typeof可能會返回以下值 typeof操作符在檢測引用型別的值時,總是會返回object,所以用處不大。instanceof用來檢測物件型別的,返回值是 true false。例如 pe...
JavaScript高階程式設計 this
在函式中this到底取何值,是在函式真正被呼叫執行的時候確定的,函式定義的時候確定不了 因為this的取值是執行上下文環境的一部分,每次呼叫函式,都會產生乙個新的執行上下文環境。所謂建構函式就是用來new物件的函式。其實嚴格來說,所有的函式都可以new乙個物件,但是有些函式的定義是為了new乙個物件...
javascript 高階程式設計 二
這裡我們直接進入主題 在js剛剛開始的時候,必須面臨乙個問題,那就是如何使的js的載入和執行不會影響web核心語言html的展示效果,和html和諧共存。在這個背景下 2 xhtml中的應用 在html中如果字串,那麼html就會認為js指令碼已經結束所以會產生乙個錯誤用一下 來替換 來替換aler...