以下の 2 つの従業員クラスを作成しました。1 つはコンストラクター関数を使用し、もう 1 つは JSON 表記を使用します。コンストラクター関数では、print
関数はプロトタイプによって作成されるため、コピーは 1 つだけ保持され、オブジェクト (emp1
および) はこの関数emp2
を共有します。print
質問: JSON 表記 ( EmployeeNew
) では、print
関数は 1 つのコピーとしてメモリに保持されますか? それとも、各オブジェクトは独自のコピーを保持しますか? これら2つのアプローチの根本的な違いは何ですか? どのシナリオに最適か?
var Employee = function (name) {
this.name = name;
};
Employee.prototype.print = function () {
console.log(this.name);
}
var emp1 = new Employee("jack"),
emp2 = new Employee("mark");
emp1.print();
emp2.print();
var EmployeeNew = {
init: function (name) { this.name = name; },
print: function () {
console.log(this.name);
}
};
var empNew1 = Object.create(EmployeeNew),
empNew2 = Object.create(EmployeeNew)
empNew1.init("jack")
empNew1.print();
empNew2.init("jack");
empNew2.print();