23-JavaScript-オブジェクト指向-Object類-拡張プロトタイプ-メンバー関数


Object類拡張プロトタイプのメンバー関数
1.Object類
    Object類はすべてのJavaScript類の基質であり、    カスタムオブジェクトを作成する簡単な方法を提供します.    カスタムコンストラクタは不要です.
 1)主な属性
    ①constructor        オブジェクトのコンストラクタ    ②prototype        クラスのプロトタイプのオブジェクトを取得します.
 2)主な方法
    ①ハスOwnProperty(property)        このクラスで定義された属性に属するかどうか    ②isPrototypeOf(object)        クラスのプロポーチを指定しますか?    ③propertyIs Enumerable(property)        列挙可能な属性ですか?    ④toString()        オブジェクトに対応する文字列を返します.    ⑤valueOf()        オブジェクトの元のタイプの値を返します.
 3)オブジェクトを作成する       
    var obj = new Object();

    obj.name = "  ";
    
    obj.gender = " ";
    
    obj.show = function() {
        return this.name + "  " + this.gender;
    }

    console.info( obj.show() );
2.原型オブジェクトを拡張する
 1)Number拡張
    Number.prototype.add = function( num ) {
        return this + num;
    }

    var x = 10;
    // <==> var x = new Number(10);


    console.info( x.add(1).add(2) );    // 13
 2)拡張アラy
    Array.prototype.find = function(val) {
        for (var i = 0; i < this.length; i++) {
            if (val == this[i]) {
                return i;
            }
        }
        return -1;
    }

    var arr = [5,9];
    // <==>
    // var arr = new Array();
    // arr[0] = 5;
    // arr[1] = 9;

    console.info( arr.find(9) );
    console.info( arr.find(19) ); 
3.メンバー関数
 1)パラメータリストの可変
    - タイプ    - 個数
 2)ステートメントを省くことができますが、最大1つの値を返します.
 3)同じ名前の関数は、最後の呼び出しのみです.
    function func(v1) {
        return "11111111";
    }

    function func(v1, v2) {
        return "22222222";
    }

    console.info( func(1) );    // 22222222
 4)グローバル関数
    クラスで定義されていない関数は、グローバル関数です.
    同じ理屈で、グローバル変数もあります.