ホームページ >ウェブフロントエンド >jsチュートリアル >jsでオブジェクトを作成するにはどうすればよいですか? jsでオブジェクトを作成するメソッド(コード付き)

jsでオブジェクトを作成するにはどうすればよいですか? jsでオブジェクトを作成するメソッド(コード付き)

不言
不言オリジナル
2018-08-11 10:17:332482ブラウズ

この記事の内容は、jsでオブジェクトを作成する方法についてです? jsでオブジェクトを作成する方法(コード付き)は、必要な友人が参考になれば幸いです。

オブジェクトを作成するための魔法の武器は 4 つあります

1. オブジェクト コンストラクターを使用して作成します (単一のオブジェクトのみを作成できます)

let obj = new Object();
obj.name = '命名最头痛'
obj.age = 18
obj.job = function() {
    console.log('programer')
}

このメソッドは単一のオブジェクトを作成するもので、カプセル化はまったくなく、すべての属性が作成されます。 add を記述する必要があります。一度 obj にすると、コードの可読性はあまり良くありませんが、理解してください。

2. リテラルを介してオブジェクトを作成する (単一オブジェクトのみ作成可能)

let obj = {
    name: '命名最头痛',
    age: '18,
    job: function() {
        console.log('programer')
    }
};

このメソッドも、以前のメソッドと比較すると、可読性は向上しますが、カプセル化の問題はまだ解決されていません。再利用性を高めるために共通部分をカプセル化してパラメータを渡すことで作成できることが期待され、このときに登場したのが関数方式です。

3. ファクトリ パターン

ファクトリ ファクトリは工場のように物事をラップします

function createObj (name, age, job) {
  let obj = new Object();
  obj.name = name,
  obj.age = age,
  obj.job = function() {
    console.log(job)
  }
  return obj;
}
let obj = createObj('命名最头痛', 18, 'programer')

ファクトリ パターンの設計上の考え方は、関数内でオブジェクトを作成し、呼び出されるたびに最終的にこのオブジェクトを返すことです。新しいオブジェクトを作成します
このメソッドはカプセル化の問題を解決しますが、この時点でもオブジェクトのタイプが分からない限り、依然としてニーズを満たすことはできません。

4. コンストラクター パターン

ECMA の コンストラクターを使用して、オブジェクト コンストラクターに加えて、オブジェクト タイプのプロパティを定義するカスタム コンストラクターも作成できることがわかっています。

function Obj (name, age, job) {
  this.name = name
  this.age = age
  this.job = function() {
    console.log(job)
  }
}

let obj1 = new Obj('命名最头痛', 18 'programer')
let obj2 = new Obj('命名最头痛', 18 'programer')
前に、

構造体コンストラクターと関数の違いは何ですかを修正していましたが、後で、new演算子を介して呼び出される限り、どの関数もコンストラクターとして使用できることを発見しました。 new 演算子シンボルを介して呼び出されない場合は、コンストラクターとして使用できます。これは、同じプロパティを持ちますが、異なる場所で使用され、異なる名前が付けられます。 ここで、new という謎の新しい単語を発見しました。そうです、new という単語はオブジェクトを作成するために使用されます。では、new の背後では一体何が行われているのでしょうか?

① 新しいオブジェクトを作成します

② コンストラクターのスコープを新しいオブジェクトに割り当てます (つまり、 this はこの新しいオブジェクトを指します)

③ コンストラクター内のコードを実行します (この新しいオブジェクトに属性を追加します)
④ 新しいオブジェクトを返します

さて、new がオブジェクトを作成できることはわかっています。それでは、作成されたものを何と呼ぶべきでしょうか?私たちはそれらを

インスタンス

と呼びます。 インスタンスを作成した後、そのインスタンスにはコンストラクター (constructor) 属性が付けられます。この属性を通じて、そのコンストラクターを見つけることができます。この文を理解するために例えてみましょう。オブジェクトはオタマジャクシのようなものです 母親のオタマジャクシは、オタマジャクシを出産した後、オタマジャクシに痣 (コンストラクター) を残し、オタマジャクシはこの痣を使って母親を見つけることができます。
それでは、前の方法と比べて、この方法の利点は何でしょうか?

カスタム コンストラクターを作成すると、そのインスタンスを特定の型として識別できるようになり、ファクトリ パターンがオブジェクト型を認識できないという問題が解決されます。

完璧です。オブジェクト認識の問題は解決されました。つまり、オブジェクトを見たときに、その「マザーボード」を (コンストラクターを介して) 見つける方法があるということです。

コンストラクターは完璧に見えますが、まだ欠点があります。コンストラクターが作成されるたびにオブジェクトがインスタンス化されることは誰もが知っています

同じコンストラクターによって作成されたオブジェクトの同じ名前の関数は同等ではありません

率直に言って、この方法で関数を作成するとスコープが異なります。チェーンと識別子の解決。それでも理解できない場合は、図で解決できないことはありません

jsでオブジェクトを作成するにはどうすればよいですか? jsでオブジェクトを作成するメソッド(コード付き)この図は、次のことを意味します: Person コンストラクターを通じて作成された 2 つのオブジェクト p1 と p2、同じ名前の関数 (共通メソッド)等しくありません。 (属性は必ずしも等しいとは限りません)

おすすめ記事:

jsオブジェクトでリンクリストを作成する


JSを使ったオブジェクトの作成方法の書き方例


以上がjsでオブジェクトを作成するにはどうすればよいですか? jsでオブジェクトを作成するメソッド(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。