JavaScript内蔵関数(二)


JavaScriptの組み込み関数
JavaScriptでは、変数に値を割り当てるときにnewキーワードを使用できます.たとえば、var a = new String("Hello")ここのStringはJavaScriptの内蔵関数です(これは内蔵Classではなく内蔵関数です.JavaScript自体にはclassという概念がないためです.ES 6に追加されたClassもfunctionの原理に基づいています).オリジナル関数とも呼ばれます.このような組み込み関数にはJavaScriptがまだたくさんあります.
  • String()
  • Number()
  • Boolean()
  • Array()
  • Object()
  • Function()
  • RegExp()
  • Date()
  • Error()
  • Symbol()
  • 内蔵関数を使用して付与された変数がtypeofで検出された結果はすべてobjectであり、例えばtypeof new String("")の結果は「object」であることに注意してください.したがって、ここで検出タイプはinstanceof関数を使用し、変数がclassのインスタンスであるかどうかを検出します.
    var a = new String("")
    
    a instanceof String //true
    
    "" instanceof String //false,     
    
    true instanceof Boolean //false,     
    
    [] insatanceof Array //true
    
    {} insatnceof Object //true
    
    function(){} instanceof Function //true
    
    1 instanceof Number //true
    
    Symbol("") instanceof Symbol //false

    この関数は変数の原型を判断することによって判断され,いずれの変数に対してもa._proto__を選択して、そのプロトタイプを取得します.var a=new String("")では,このときのaをパッケージングオブジェクトと呼び,パッケージングオブジェクトの値をvalueOf関数とする.宣言する必要があるのは、内蔵関数で値を割り当てるのと直接値を割り当てるのとでは異なり、直接値を割り当てることができる場合は、内蔵関数で値を割り当てるのはできるだけやめましょう.有用なカプセル化オブジェクトは、Date、Error、RegExpです.Functionを使用すると、eval()と同じように文字列変数で動的な関数を実現できます.クールだと思うかもしれませんが、実際にはこのコードが実行されている間に解釈器によって分析され、パフォーマンスに影響を与えます.
    上記のコードを見ると、instanceofは参照タイプを検出するのによく機能しているが、欠陥は依然として大きいことが分かった.
  • Symbol
  • を検出できません.
  • 基礎データ型、カプセル化対象のStringとBoolean
  • しか検出できない
    しかし、より良い方法があります.Objectのプロトタイプ関数toString()でプロトタイプに関する情報を取得することができます.次のように呼び出すには、次の呼び出し方法が分からなくても大丈夫です.覚えておいてください.後で必ず説明します.
    Object.prototype.toString.call(true) //"[object Boolean]"
    
    Object.prototype.toString.call(1) //"[object Number]"
    
    Object.prototype.toString.call("") //"[object String]" 
    
    Object.prototype.toString.call(Symbol("")) //"[object Symbol]" 

    注意:この編では、これらの原生の関数はできるだけ使わないでくださいが、私はまだこれらの原生の関数を説明する使い方が欠けています.Date、Error、RegExp、Symbolなどはよく使いますが、後で機会があればここでこの部分を補充して、先に穴を残します.