国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

關于javascript中的toString()和valueOf()

paulquei / 965人閱讀

摘要:和是對象的兩個方法,你在瀏覽器后臺輸入就可以看到了它們是其中的兩個。先說一下兩個東西的用途返回對象的字符串表示。返回對象的字符串數值或布爾值表示。如果是彈窗的話,直接調用方法。至于其他情況,待續

關于javascript中的toString()和valueOf()
我GitHub上的菜鳥倉庫地址: 點擊跳轉查看其他相關文章
文章在我的博客上的地址: 點擊跳轉

? ? ? ? 關于javascript中的toString()和valueOf()兩種方法,其實早在開始讀紅寶書(JavaScript高級程序設計)的時候已經有點困惑了,怎么搞出來這兩個這么相似的東西,重點是很多時候它們得到的結果都是一樣的,雖然之后不了了之覺得對應用沒什么大影響就不管了,直到現在開始寫博客的時候才回頭看看這個問題。

? ? ? ? 好了,開始正文了。

? ? ? ? toString() 和 valueOf() 是對象的兩個方法,你在瀏覽器后臺輸入Object.protototype就可以看到了它們是其中的兩個。

? ? ? ? 先說一下兩個東西的用途:

? ? ? ? toString( ):返回對象的字符串表示。

? ? ? ? valueOf( ):返回對象的字符串、數值或布爾值表示。

? ? ? ? 好了,寫幾個例子就明白返回結果了(undefined ?和 null ?的值就不舉例了,因為它們都沒有這兩個方法,所以肯定會報錯的):

//先看看toString()方法的結果
var a = 3;
var b = "3";
var c = true;
var d = {test:"123",example:123}
var e = function(){console.log("example");}
var f = ["test","example"];

a.toString();// "3"
b.toString();// "3"
c.toString();// "true"
d.toString();// "[object Object]"
e.toString();// "function (){console.log("example");}"
f.toString();// "test,example"
//再看看valueOf()方法的結果
var a = 3;
var b = "3";
var c = true;
var d = {test:"123",example:123}
var e = function(){console.log("example");}
var f = ["test","example"];

a.valueOf();// 3
b.valueOf();// "3"
c.valueOf();// true
d.valueOf();// {test:"123",example:123}
e.valueOf();// function(){console.log("example");}
f.valueOf();// ["test","example"]

? ? ? ? 很清楚了,toString( )就是將其他東西用字符串表示,比較特殊的地方就是,表示對象的時候,變成"[object Object]",表示數組的時候,就變成數組內容以逗號連接的字符串,相當于Array.join(",")。 而valueOf( )就返回它自身了。

? ? ? ? 至于迷惑的地方,就在于它們在什么時候被調用,舉個例子:

var a = "3";
console.log(+a);//?3

? ? ? ? 當然了,打印結果是數字3(不是字符串‘3’),因為一元加操作符接在字符串前面就將其轉換為數字了(字符串轉化為數字的一種方式,相當于Number( )方法),但是如果它應用在對象上,過程是怎樣的呢,再舉例子:

//例子一
var?example?=?{test:"123"};
console.log(+example);// NaN

//例子二 同時改寫 toString 和 valueOf 方法
var?example?=?{
    toString:function(){
        return "23";
    },
    valueOf:function(){
        return "32";
    }
};
console.log(+example);//?32

//例子三?只改寫?toString?方法
var?example?=?{
    toString:function(){
        return "23";
    }
};
console.log(+example);//?23

? ? ? ? 通過例子一和例子二的比較,我們可以知道,一元加操作符在操作對象的時候,會先調用對象的valueOf方法來轉換,最后再用Number( )方法轉換,而通過例子二和例子三的比較,我們可以知道,如果只改寫了toString方法,對象則會調用toString方法,證明valueOf的優先級比toString高。上面例子是多帶帶對對象上使用一元加操作符,但是,如果是字符串加對象呢?

console.log("test"+{});   //"test[object Object]"

? ? ? ? 這個很明顯,對象和字符串相加,肯定轉換為字符串啊,所以調用了對象的toString方法,變為[object Object]了。

? ? ? ? 好了,如果是alert呢?

//例子一
var?example?=?{test:"123"};
alert(example);// "[object Object]"

//例子二 同時改寫 toString 和 valueOf 方法
var?example?=?{
    toString:function(){
        return "23";
    },
    valueOf:function(){
        return "32";
    }
};
alert(example);//?"23"

//例子三?只改寫?valueOf?方法
var?example?=?{
    valueOf:function(){
        return "32";
    }
};
alert(example);// "[object Object]"

? ? ? ? 雖然上面結果我用雙引號了,但是你知道彈窗不會將字符串的雙引號表示出來的。通過上面幾個例子,我們就知道了,alert它對待對象,就和字符串和對象相加一樣,就是調用它的toString( )方法,和valueOf方法無關。

? ? ? ? 好了,總結一下,一般用操作符多帶帶對對象進行轉換的時候,如果對象存在valueOf或toString改寫的話,就先調用改寫的方法,valueOf更高級,如果沒有被改寫,則直接調用對象原型的valueOf方法。如果是彈窗的話,直接調用toString方法。至于其他情況,待續……

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/88342.html

相關文章

  • 關于Javascript中的valueOftoString

    摘要:中默認的方法返回字符串。的方法將返回一個具有可讀性的日期時間字符串。函數的作用是返回該自身。其他一律返回對象本身。在有運算操作符的情況下,的優先級高于。 +{ a: 1, toString: function() { return 10 }, valueOf: function() { return 100 } } 以上引申出對象數據的轉換的問題:所有對象繼承了兩個轉換方法: toS...

    lvzishen 評論0 收藏0
  • 關于JavaScript函數柯里化問題探索

    摘要:函數柯里化關于函數柯里化的問題最初是在忍者秘籍中講閉包的部分中看到的,相信很多同學見過這樣一道和柯里化有關的面試題實現一個函數,使得如下斷言能夠能夠通過簡單說就是實現一個求值函數,能夠將所有參數相加得出結果。方法返回一個表示該對象的字符串。 函數柯里化 ??關于函數柯里化的問題最初是在《JavaScript忍者秘籍》中講閉包的部分中看到的,相信很多同學見過這樣一道和柯里化有關的面試題:...

    vboy1010 評論0 收藏0
  • 掌握 Javascript 類型轉換:從規則開始

    摘要:首先,為了掌握好類型轉換,我們要理解一個重要的抽象操作為什么說這是個抽象操作呢因為這是內部才會使用的操作,我們不會顯示調用到。基本規則中的類型轉換總是返回基本類型值,如字符串數字和布爾值,不會返回對象和函數。 Javascript 里的類型轉換是一個你永遠繞不開的話題,不管你是在面試中還是工作寫代碼,總會碰到這類問題和各種的坑,所以不學好這個那是不行滴。關于類型轉換我也看過不少的書和各...

    mikyou 評論0 收藏0
  • JavaScript類型:關于類型,有哪些你不知道的細節?

    摘要:通過拆箱轉換,把對象編程基本類型,再從從基本類型轉換成對應的或者。拆箱轉換會嘗試調用和來獲得拆箱后的基本類型。 undefined和null ??Undefined類型表示未定義,它的類型只有一個值為undefined。任何變量在賦值前都是undefined類型,值為undefined。但是JS中undefined是一個變量,并非是一個關鍵字,為了避免無意中的篡改,使用void 0來獲...

    JessYanCoding 評論0 收藏0
  • JavaScript類型轉換的迷糊事兒

    摘要:下面分幾步來簡單的探探不同類型的轉換吧以下的內容,都可以從權威指南中找到。其他值轉換成在編寫代碼的過程中,幾乎不用考慮它的取值類型。核心內置類,會嘗試先于可以理解為對象優先轉換成數字例外的是,利用的是轉換。 最近在寫公司的登錄注冊模塊,遇到類型不同相比較的時候,就心驚膽戰,每次都要用瀏覽器來驗證一下,決定亂七八糟的隨便寫一下,方便日后自己回顧知識~ 弱類型帶來的那些讓人迷糊的事 弱類型...

    harriszh 評論0 收藏0

發表評論

0條評論

paulquei

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<