ホームページ > ウェブフロントエンド > jsチュートリアル > jsのプロトタイプチェーン、クロージャ、継承、名前空間、列挙型の4つの機能とは何ですか?

jsのプロトタイプチェーン、クロージャ、継承、名前空間、列挙型の4つの機能とは何ですか?

青灯夜游
リリース: 2019-01-29 13:12:33
転載
2647 人が閲覧しました

この記事の内容は、jsにおけるプロトタイプチェーン、クロージャ、継承、名前空間、列挙型の4つの機能を紹介するというものでしょうか? 。困っている友人は参考にしていただければ幸いです。

プロトタイプ チェーン

JavaScript オブジェクトは、プロパティの動的な「パッケージ」です (独自のプロパティを参照します)。 JavaScript オブジェクトには、プロトタイプ オブジェクトを指すチェーンがあります。オブジェクトのプロパティにアクセスしようとすると、オブジェクトを検索するだけでなく、オブジェクトのプロトタイプ、オブジェクトのプロトタイプのプロトタイプも検索し、一致する名前のプロパティが見つかるまで上方向に検索します。またはプロトタイプのチェーンの終端に到達します。

#元のプロトタイプ チェーンに影響を与えずに元のプロトタイプ チェーンをコピーするターゲットを作成します

var inherit = (function(){
    var F = function (){};
    return function (Target, Origin){
        F.prototype = Origin.prototype; 
        Target.prototype = new F();
        Target.prototype.constructor = Target;   //目标函数的原型的构造函数定义为目标函数
        Target.prototype.uber = Origin.prototype; //uber超类,指的是目标函数的最终原型为Orign的原型
        }
    }())
ログイン後にコピー

継承

一般に企業では、関数記述関数をすぐに実行し、初期化関数 init() を呼び出すことがよくあります。

##コード内の callname() の呼び出し関数は、このポインタを変更することです。現在の関数

の名前の this ポインタを this に変更します。関数

<script>
var init=(function(){
    var name ='辣鸡';
    function callname(){
        console.log(name);
        }
    return function(){
        callname();
        }
    }())
init();
</script>
ログイン後にコピー

を返すには return が使用されることに注意してください。列挙:

var org={
    name:'智障',
    sex:'男',
    height:178
}
for ( var proto in org ){
    console.log(org.proto)
}
ログイン後にコピー

これは、proto がオブジェクトのプロパティとみなされ、コード内の org.proto を org[proto] に変更する必要があるため、未定義が 3 回表示されます。変更しない場合はデフォルトになります。 org['proto'] として理解されます。

通常の出力は次のとおりです。属性を出力したい場合は、console.log(proto)

## だけを出力します。

# オブジェクトの列挙、3 つのメソッド:

for in -----> 1.instanceof 2.hasOwnProperty 3. in

1. B

A のインスタンス B

A オブジェクトが B

function Person(){}
var person = new Person();
ログイン後にコピー

# のコンストラクターによって構築されるかどうかを判断します。

##それでは、配列とオブジェクトを識別する方法----->1.instanceof2.文字列呼び出し3.constructor

1) var obj= {}

2) toString call

3) コンストラクター

var obj = {}

オブジェクト A

2 のプロトタイプ チェーン上に B のプロトタイプがあるかどうかを確認し、OwnProperty

に属しているかどうかを判断します。独自のメソッドでは、プロトタイプ メソッド __proto__

var org={
    name:'智障',
    sex:'男',
    height:178,
    __proto__:{
        lastName:'zhang'
        }
    }for(var prop in org){    if(org.hasOwnProperty( prop )){
    console.log(prop)
    }
}var obj={};
ログイン後にコピー

##3、in

in および hasOwnProperty ケース タイプを除外できますが、プロトタイプはメソッド列挙にも存在します

内部関数が外部に保存されると、クロージャ関数が生成され、クロージャによって元のスコープ チェーンが解放されなくなります。メモリ リークを引き起こす

クロージャの 4 つの関数:

1. パブリック変数を実装します。例: アキュムレータ

2. キャッシュできる (ストレージ構造)。 )

3. カプセル化と属性のプライベート化を実装する

4. グローバル変数の汚染を防ぐためのモジュール開発 (Holy Grail モード)

/クロージャを使用してパブリック関数を定義し、有効にするプライベート関数や変数にアクセスするために使用します。この方法はモジュールパターン(聖杯パターン)とも呼ばれます

以上がjsのプロトタイプチェーン、クロージャ、継承、名前空間、列挙型の4つの機能とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート