関数を構築するオブジェクトvs一般オブジェクト

4294 ワード

コンストラクション関数によって作成されたオブジェクト

function Old(name,age){
	this.name = name;
	this.age = age;
	this.name_ip = function(){
		console.log(name);
        	console.log(this);
	} 
}

let name1 = new Old('misaka',19)

name1.name_ip();
結果 misaka Old {name: "misaka", age: 19, name_ip: ƒ}

nameだけを出力して正常に出力できるのは、thisです。メソッドはname ipとして定義されており、this(name 1)のnameが検索されるため、thisは単独で使用されます。名前を印刷する必要はありません。

オブジェクトのみ

let name2 = {
    name : 'misaka',
    age : 19,
    name_ip : function(){
        console.log(this.name);
        console.log(this);
    }
}

name2.name_ip()
結果 misaka {name: "misaka", age: 19, name_ip: ƒ}

this.nameとして出力するのは、nameのみを出力するとnameが見つからないため、指定した名前のthis(name 2)を指摘してnameを検索する必要があるからです。nameを印刷させるべきです。

整理する


複数のフレームワーク(オブジェクトなど)を作成する場合は、関数を構築する必要があります。直接作成したオブジェクトとして使用することを推奨します(1つのオブジェクトのみを作成します)。