欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

《JavaScript高級(jí)程序設(shè)計(jì)》閱讀筆記(三) ECMAScript中的引用類型

 更新時(shí)間:2012年02月27日 23:30:44   作者:  
ECMAScript中的引用類型,主要包括Object類、Boolean類、Number類、String類、instanceof運(yùn)算符
2.8 引用類型

1、Object類
  ECMAScript中的所有類都是由Object類繼承而來(lái)。

  Object類具有下列屬性:

  Constructor:對(duì)創(chuàng)建對(duì)象的函數(shù)的引用(指針),對(duì)于Object類,該指針指向原始的Object()函數(shù)

  Prototype:對(duì)該對(duì)象的對(duì)象原型的引用。

  Object類還有幾個(gè)方法:

  HasOwnProperty(property):判斷對(duì)象是否有某個(gè)特定的屬性。必須用字符串指定該屬性值

  IsPrototypeOf(object):判斷該對(duì)象是否為另一個(gè)對(duì)象的原型。

  PropertyIsEnumerable(property):判斷給定的屬性是否可以用for...in語(yǔ)句進(jìn)行枚舉

  ToString():返回對(duì)象的原始字符串表示。

  ValueOf():返回最適合該對(duì)象的原始值。對(duì)于許多類,該方法返回的值都與toString()的返回值相同。

  上面列出的每種屬性和方法都會(huì)被其他類覆蓋。

2、Boolean類
  在ECMAScript中很少使用Boolean對(duì)象,因?yàn)椴灰桌斫?,如?
復(fù)制代碼 代碼如下:

var oFalseObject = new Boolean(false);
var bResult= oFalseObject && true; //outpus true

  在這段代碼中,用false值創(chuàng)建Boolean對(duì)象,然后用這個(gè)值與原始值true進(jìn)行 AND 操作。在Boolean運(yùn)算中,false和true進(jìn)行AND 操作的結(jié)果是 false。不過(guò),在這行代碼中,計(jì)算的是oFalseObject,而不是它的值false。在Boolean表達(dá)式中,所有對(duì)象都會(huì)被自動(dòng)轉(zhuǎn)換為true,所以結(jié)果為true。參考下面的代碼:
復(fù)制代碼 代碼如下:

var oFalseObject = new Boolean(false);
var bResult= oFalseObject && true; //outpus true
var bResult2= oFalseObject.valueOf() && true; //outpus false

3、Number類
  Number的toString()方法在上篇文章中有詳細(xì)的介紹。

  Number有幾個(gè)處理數(shù)值的專用方法:

  toFixed(參數(shù)):返回的是具有指定位數(shù)小數(shù)的數(shù)字的字符串表示。參數(shù)范圍為0—20

  toExponential(參數(shù)):返回的是用科學(xué)計(jì)數(shù)法表示的數(shù)字的字符串形式。與toFixed()方法相似,toExponential()也有一個(gè)參數(shù)要輸出的小數(shù)的位數(shù)。參數(shù)范圍為0—20

  toPrecision(參數(shù)):根據(jù)最有意義的形式來(lái)返回?cái)?shù)字的預(yù)定形式或指數(shù)形式。它有一個(gè)參數(shù),即用于表示數(shù)字總數(shù)(不包括指數(shù))。參數(shù)最小為1

  以上三個(gè)方法都會(huì)進(jìn)行舍入操作。示例代碼:
復(fù)制代碼 代碼如下:

var oNumber=new Number(99);
console.log(oNumber.toFixed(0)); //outpus 99
console.log(oNumber.toFixed(2)); //outpus 99.00

var oNumber1=new Number(99);
console.log(oNumber1.toExponential(0)); //outpus 1e+2 進(jìn)行了舍入操作
console.log(oNumber1.toExponential(1)); //outpus 9.9e+1
console.log(oNumber1.toExponential(2)); //outpus 9.90e+1

var oNumber3=new Number(99);
console.log(oNumber3.toPrecision(0)); //outpus error precision 0 out of range
console.log(oNumber3.toPrecision(1)); //outpus 1e+2 進(jìn)行了舍入操作
console.log(oNumber3.toPrecision(2)); //outpus 99
console.log(oNumber3.toPrecision(3)); //outpus 99.0

4、String類
  String對(duì)象的valueOf()方法和toString()方法都會(huì)返回String型的原始值:
復(fù)制代碼 代碼如下:

var oStringObject=new String("Hello world");
console.log(oStringObject.valueOf() == oStringObject.toString());//outpus true

  String類具有l(wèi)ength屬性,它是字符串中的字符個(gè)數(shù),雙字節(jié)字符也算一個(gè)字符。

  String類有大量的方法,主要介紹如下:

  charAt(整型參數(shù)):返回字符串中單個(gè)字符。示例:
復(fù)制代碼 代碼如下:

var oStringObject=new String("Hello world");
console.log(oStringObject.charAt(0));//outpus "H"
console.log(oStringObject.charAt(1));//outpus "e"
console.log(oStringObject.charAt(11));//outpus (an empty string)

  charCodeAt(整型參數(shù)):返回字符串中單個(gè)字符代碼。示例:
復(fù)制代碼 代碼如下:

var oStringObject=new String("Hello world");
console.log(oStringObject.charCodeAt(0));//outpus "72"
console.log(oStringObject.charCodeAt(1));//outpus "101"
console.log(oStringObject.charCodeAt(11));//outpus NaN

  concat(字符串):把一個(gè)或多個(gè)字符串連接到String對(duì)象的原始值上。示例:
復(fù)制代碼 代碼如下:

var oStringObject=new String("Hello world");
var sResult=oStringObject.concat(" Concat");
console.log(oStringObject);//outpus "String { 0="H", 1="e", 2="l", ...}"
console.log(sResult);//outpus "Hello world Concat"
alert(oStringObject);//outpus "Hello world"

  indexOf(字符串):返回指定的字符串在另一個(gè)字符串中的位置(從字符串的開(kāi)頭進(jìn)行檢索)。

  lastIndexOf(字符串):返回指定的字符串在另一個(gè)字符串中的位置(從字符串的結(jié)尾進(jìn)行檢索)。示例:
復(fù)制代碼 代碼如下:

var oStringObject=new String("Hello Hello");
console.log(oStringObject.indexOf("lo"));//outpus 3
console.log(oStringObject.lastIndexOf("lo"));//outpus 9

  localeCompare(字符串):對(duì)字符串進(jìn)行排序,返回值是下列三個(gè)之一:

  A、如果String對(duì)象按照字母順序排在參數(shù)中的字符串之前,返回負(fù)數(shù)(通常是-1,但真正返回值由具體實(shí)現(xiàn)決定)

  B、如果String對(duì)象等于參數(shù)中的字符串,返回0

  C、如果String對(duì)象按照字母順序排在參數(shù)中的字符串之后,返回正數(shù)(通常是1,但真正返回值由具體實(shí)現(xiàn)決定)

  示例:
復(fù)制代碼 代碼如下:

var oStringObject=new String("Hello");
console.log(oStringObject.localeCompare("aello")); //outpus 1
console.log(oStringObject.localeCompare("Hello")); //outpus 0
console.log(oStringObject.localeCompare("zello")); //outpus -1

  slice(整型參數(shù)[,整型參數(shù)])、substring(整型參數(shù)[,整型參數(shù)]):從子串創(chuàng)建字符串值。第一個(gè)參數(shù)是要獲取的子串的起始位置,第二個(gè)參數(shù)是要獲取的子串終止前的位置,如果省略第二參數(shù),終止位就默認(rèn)為字符串長(zhǎng)度。這兩個(gè)方法都不改變String對(duì)象自身值。當(dāng)參數(shù)為正時(shí)兩個(gè)方法用法及返回值均相同,只有參數(shù)有負(fù)值時(shí)才不同。對(duì)于負(fù)參數(shù),slice()方法會(huì)用字符串的長(zhǎng)度加上參數(shù),substring()將其做為0處理。另外如果有兩個(gè)參數(shù),第二個(gè)比第一個(gè)小時(shí),slice()返回的值為空,substring()會(huì)把較小的作為第一個(gè)參數(shù)。為示例:
復(fù)制代碼 代碼如下:

var oStringObject=new String("Hello World");
console.log(oStringObject.slice(3)); //outpus "lo World"
console.log(oStringObject.substring(3)); //outpus "lo World"
console.log(oStringObject.slice(3,7)); //outpus "lo W"
console.log(oStringObject.substring(3,7)); //outpus "lo W"
console.log(oStringObject.slice(3,0)); //outpus (an empty string)
console.log(oStringObject.substring(3,0)); //outpus "Hel"

console.log(oStringObject.slice(-3)); //outpus "rld"
console.log(oStringObject.substring(-3)); //outpus "Hello World"
console.log(oStringObject.slice(3,-4)); //outpus "lo W"
console.log(oStringObject.substring(3,-4)); //outpus "Hel"

  toLowerCase()、toLocaleLowerCase()、toUpperCase()、toLocaleUpperCase():前兩個(gè)用于把字符串轉(zhuǎn)換為全小寫(xiě),后兩個(gè)用于把字符串轉(zhuǎn)換為全大寫(xiě)。toLowerCase()跟toUpperCase()是原始方法,toLocaleLowerCase()跟toLocaleUpperCase()是基于特定區(qū)域?qū)崿F(xiàn)的。示例:
復(fù)制代碼 代碼如下:

var oStringObject=new String("Hello World");
console.log(oStringObject.toLowerCase()); //outpus "hello world"
console.log(oStringObject.toLocaleLowerCase()); //outpus "hello world"
console.log(oStringObject.toUpperCase()); //outpus "HELLO WORLD"
console.log(oStringObject.toLocaleUpperCase()); //outpus "HELLO WORLD"

  
5、instanceof運(yùn)算符
  在使用typeof運(yùn)算符時(shí)采用引用類型存儲(chǔ)值會(huì)出現(xiàn)一個(gè)問(wèn)題,無(wú)論引用的是什么類型的對(duì)象,它都返回"object"。ECMAScript引入了另一個(gè)運(yùn)算符 instanceof 來(lái)解決這個(gè)問(wèn)題。
  instanceof運(yùn)算符與typeof運(yùn)算符相似,用于識(shí)別正在處理的對(duì)象的類型。與typeof方法不同的是,instanceof 方法要求開(kāi)發(fā)者明確地確認(rèn)對(duì)象為某特定類型。示例:
復(fù)制代碼 代碼如下:

var oStringObject=new String("hello world");
alert(oStringObject instanceof String); //outpus "true"

相關(guān)文章

最新評(píng)論