最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

全面解析JavaScript中的valueOf與toString方法(推薦)

 更新時間:2016年06月14日 15:39:52   投稿:mrr  
本文給大家介紹JavaScript中的valueOf與toString方法,valueOf() 方法可返回 Boolean 對象的原始值,toString() 方法可把一個邏輯值轉換為字符串,并返回結果。對js中valueof和tostring相關知識感興趣的朋友一起學習吧

可以這樣說,所有JS數(shù)據(jù)類型都擁有valueOf和toString這兩個方法,null除外。它們倆解決javascript值運算與顯示的問題。在程序應用非常廣泛。下面我們逐一來給大家介紹下。

JavaScript 的 valueOf() 方法

valueOf() 方法可返回 Boolean 對象的原始值。

用法booleanObject.valueOf(),返回值為booleanObject 的原始布爾值。如果調(diào)用該方法的對象不是 Boolean,則拋出異常 TypeError。

<script type="text/javascript">
var boo = new Boolean(false);
document.write(boo.valueOf());
</script>

以上腳本會輸出false。

JavaScript 的 toString() 方法

toString() 方法可把一個邏輯值轉換為字符串,并返回結果。

用法 booleanObject.toString(),返回值根據(jù)原始布爾值或者 booleanObject 對象的值返回字符串 "true" 或 "false"。如果調(diào)用該方法的對象不是 Boolean,則拋出異常 TypeError。

在 Boolean 對象被用于字符串環(huán)境中時,此方法會被自動調(diào)用。

下面腳本將創(chuàng)建一個 Boolean 對象,并把它轉換成字符串:

<script type="text/javascript">
var boo = new Boolean(true);
document.write(boo.toString());
</script>

腳本輸出:true。

先看一例:

var aaa = {
i: 10,
valueOf: function() { return this.i+30; },
toString: function() { return this.valueOf()+10; }
}
alert(aaa > 20); // true
alert(+aaa); // 40
alert(aaa); // 50

之所以有這樣的結果,因為它們偷偷地調(diào)用valueOf或toString方法。但如何區(qū)分什么情況下是調(diào)用了哪個方法呢,我們可以通過另一個方法測試一下。由于用到console.log,請在裝有firebug的FF中實驗!

var bbb = {
i: 10,
toString: function() {
console.log('toString');
return this.i;
},
valueOf: function() {
console.log('valueOf');
return this.i;
}
}
alert(bbb);// 10 toString
alert(+bbb); // 10 valueOf
alert(''+bbb); // 10 valueOf
alert(String(bbb)); // 10 toString
alert(Number(bbb)); // 10 valueOf
alert(bbb == '10'); // true valueOf
alert(bbb === '10'); // false

乍一看結果,大抵給人的感覺是,如果轉換為字符串時調(diào)用toString方法,如果是轉換為數(shù)值時則調(diào)用valueOf方法,但其中有兩個很不和諧。一個是alert(''+bbb),字符串合拼應該是調(diào)用toString方法……另一個我們暫時可以理解為===操作符不進行隱式轉換,因此不調(diào)用它們。為了追究真相,我們需要更嚴謹?shù)膶嶒灐?/p>

var aa = {
i: 10,
toString: function() {
console.log('toString');
return this.i;
}
}
alert(aa);// 10 toString
alert(+aa); // 10 toString
alert(''+aa); // 10 toString
alert(String(aa)); // 10 toString
alert(Number(aa)); // 10 toString
alert(aa == '10'); // true toString

再看valueOf。

var bb = {
i: 10,
valueOf: function() {
console.log('valueOf');
return this.i;
}
}
alert(bb);// [object Object]
alert(+bb); // 10 valueOf
alert(''+bb); // 10 valueOf
alert(String(bb)); // [object Object]
alert(Number(bb)); // 10 valueOf
alert(bb == '10'); // true valueOf

發(fā)現(xiàn)有點不同吧?!它沒有像上面toString那樣統(tǒng)一規(guī)整。對于那個[object Object],我估計是從Object那里繼承過來的,我們再去掉它看看。

Object.prototype.toString = null;
var cc = {
i: 10,
valueOf: function() {
console.log('valueOf');
return this.i;
}
}
alert(cc);// 10 valueOf
alert(+cc); // 10 valueOf
alert(''+cc); // 10 valueOf
alert(String(cc)); // 10 valueOf
alert(Number(cc)); // 10 valueOf
alert(cc == '10'); // true valueOf

如果只重寫了toString,對象轉換時會無視valueOf的存在來進行轉換。但是,如果只重寫了valueOf方法,在要轉換為字符串的時候會優(yōu)先考慮valueOf方法。在不能調(diào)用toString的情況下,只能讓valueOf上陣了。對于那個奇怪的字符串拼接問題,可能是出于操作符上,翻開ECMA262-5 發(fā)現(xiàn)都有一個getValue操作。嗯,那么謎底應該是揭開了。重寫會加大它們調(diào)用的優(yōu)化高,而在有操作符的情況下,valueOf的優(yōu)先級本來就比toString的高。

以上所述是小編給大家介紹的JavaScript中的valueOf與toString方法的全部敘述,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • Js通過AES加密后PHP用Openssl解密的方法

    Js通過AES加密后PHP用Openssl解密的方法

    這篇文章主要給大家介紹了關于Js如何通過AES加密后PHP利用Openssl解密的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-07-07
  • javascript 可控式透明特效實現(xiàn)代碼

    javascript 可控式透明特效實現(xiàn)代碼

    透明特效是script.aculo.us提到的特效中最簡單的特效之一。既然是特效,必須涉及時間與空間的概念。時間我們可以用setTimeout與setInterval,個人比較喜歡setTimeout,雖然它每次調(diào)用都重復注冊,但可控性比較好。
    2010-01-01
  • javascript簡寫常用的12個技巧(可以大大減少你的js代碼量)

    javascript簡寫常用的12個技巧(可以大大減少你的js代碼量)

    這篇文章主要跟大家分享了javascript簡寫常用的12個技巧,通過這12個技巧可以大大減少你的js代碼量,看懂一種是入門,全懂就是大神,你能知道幾個呢?需要的朋友們下面跟著小編來一起學習學習下吧。
    2017-08-08
  • 利用JS輕松實現(xiàn)獲取表單數(shù)據(jù)

    利用JS輕松實現(xiàn)獲取表單數(shù)據(jù)

    本文主要介紹了利用JS輕松實現(xiàn)獲取表單數(shù)據(jù)。方法有別于原始的做法,大家可以試著找原始做法與本文所說方法之間的區(qū)別。有興趣的朋友可以看下,希望對大家有所幫助
    2016-12-12
  • 全面解析js中的原型,原型對象,原型鏈

    全面解析js中的原型,原型對象,原型鏈

    這篇文章主要介紹了圖解js中的原型,原型對象,原型鏈,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下
    2021-01-01
  • layer.open屬性詳解及l(fā)ayer.open彈出框使用post方法舉例

    layer.open屬性詳解及l(fā)ayer.open彈出框使用post方法舉例

    這篇文章主要給大家介紹了關于layer.open屬性詳解及l(fā)ayer.open彈出框使用post方法的相關資料,最近接觸到layer彈窗,感覺彈窗功能異常強大,真的很方便,所以記錄下來,需要的朋友可以參考下
    2023-12-12
  • Javascript es7中比較實用的兩個方法示例

    Javascript es7中比較實用的兩個方法示例

    這篇文章主要給大家分享了關于Javascript es7中比較實用的兩個方法示例,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • js將控件隱藏及display屬性的使用介紹

    js將控件隱藏及display屬性的使用介紹

    用JavaScript隱藏控件的方法有兩種,分別是通過設置控件的style的“display”和“visibility”屬性,下面詳細為大家介紹下具體的使用
    2013-12-12
  • JavaScript數(shù)組中reduce方法的應用詳解

    JavaScript數(shù)組中reduce方法的應用詳解

    JavaScript 中的reduce()方法可以用于將數(shù)組元素匯總為單個值,,所以本文為大家整理了一些JavaScript數(shù)組中reduce方法的應用,需要的可以參考一下
    2023-07-07
  • js獲取checkbox值的方法

    js獲取checkbox值的方法

    這篇文章主要介紹了js獲取checkbox值的方法,涉及js針對節(jié)點的操作技巧,非常具有實用價值,需要的朋友可以參考下
    2015-01-01

最新評論

石棉县| 济南市| 会理县| 德化县| 赤水市| 峨眉山市| 民和| 台中市| 琼中| 子洲县| 清水河县| 胶南市| 辽阳市| 东丽区| 镇宁| 永登县| 德阳市| 广水市| 嘉定区| 偏关县| 隆子县| 策勒县| 河池市| 龙口市| 鄂伦春自治旗| 德江县| 启东市| 同心县| 仁寿县| 黎城县| 南部县| 讷河市| 田东县| 葫芦岛市| 班戈县| 沛县| 剑河县| 寻乌县| 广西| 丹阳市| 南宁市|