Я использую defineProperty
для создания свойств объекта. Параметр descriptor
в функции обязательно должен быть object
. Вот код:
var config=new Object();
var defineProp = function ( obj, key, value ){
config.value = value; // why should this parameter be an object?
Object.defineProperty( obj, key, config );
};
Почему нам нужно передать объект в параметр Descriptor
У меня ниже двух фрагментов кода, где я создаю конструктор, а затем создаю объекты, используя его. Оба кода возвращают один и тот же вывод в консоли. Использует ли использование .prototype.Methodname
что-нибудь?
function Car( model, year, miles ) {
this.model = model;
this.year = year;
this.miles = miles;
}
Car.prototype.toString = function () {
return this.model + " has done " + this.miles + " miles";
};
// Usage:
var civic = new Car( "Honda Civic", 2017, 30000 );
console.log( civic.toString() );
function Car( model, year, miles ) {
this.model = model;
this.year = year;
this.miles = miles;
this.toString = function () {
return this.model + " has done " + this.miles + " miles";
};
}
var civic = new Car( "Honda Civic", 2017, 30000 );
console.log( civic.toString() );
Использование кода выглядит следующим образом:
var civicSport= Object.create( person );
defineProp(civicSport, "topSpeed", "120mph");//function created above
console.log(civicSport);
Параметр descriptor
относится к определенному или модифицированному свойству, поэтому нам нужно передать его как пару ключевых значений (ключ= свойство определено/изменено, значение= изменено или присвоено значение для свойства). Таким образом, descriptor
должен быть Object
Для получения дополнительной информации см. Документы MDN
var driver=new Object; defineProp(driver, "topSpeed", "100mph");
Здесь ключ ( topSpeed
) и значение ( 100mph
) передаются отдельно, поэтому зачем передавать объект для части «Значение».