<pre>
будет самым простым вариантом. class Filters {
constructor(x) {
this.default = { prop: 'foo' };
this.list = {};
}
add(name) {
this.list[name] = Object.create(this.default);
}
}
let attempt = new Filters();
attempt.add('first');
attempt.add('second');
attempt.list['second'].prop = 'custom';
console.log(attempt.list['first'].prop, attempt.list['second'].prop);
// → foo custom
attempt.default.prop = 'bar';
console.log(attempt.list['first'].prop, attempt.list['second'].prop);
// → bar custom
class Filters {
constructor(x) {
this.prop = 'foo';
this.list = {};
}
add(name) {
const item = this.list[name] = Object.defineProperty({}, 'prop', {
enumerable: true,
configurable: true,
get: () => this.prop,
set: (v) => {
Object.defineProperty(item, 'prop', {
enumerable: true,
writable: true,
value: v
});
}
});
}
}
let attempt = new Filters();
attempt.add('first');
attempt.add('second');
attempt.list['second'].prop = 'custom';
console.log(attempt.list['first'].prop, attempt.list['second'].prop);
// → foo custom
attempt.prop = 'bar';
console.log(attempt.list['first'].prop, attempt.list['second'].prop);
// → bar custom
├── Cargo.lock
├── Cargo.toml
├── src
│ ├── first
│ │ └── mod.rs
│ ├── main.rs
│ └── second.rs
pub fn foo() {
println!("first::foo()");
}
pub fn bar() {
println!("second::bar()");
}
mod first;
mod second;
use second::*;
fn main() {
first::foo();
bar();
}
в таблице рекордов (которую заполнял вручную автор по запросам на почту) были люди, выполнившие эту задачу за 1 символ. Вопрос: какой это был символ или как иначе они это сделали?
function Entity(name) {
this.name = name;
}
Entity.prototype.write = function() {
console.log(this.name);
}
var calina = new Entity('calina');
calina.write();
var context = this;
var calina = {
write: function() {
for(var prop in context) {
if(context[prop] !== this) continue;
console.log("Found self:", prop);
return prop;
}
}
}
calina.write(); // 'calina'
context
а «искать себя» в объекте window
:var calina = {
write: function() {
for(var prop in window) {
if(window[prop] !== this) continue;
console.log("Found self:", prop);
return prop;
}
}
}
calina.write(); // 'calina'
var calina2 = calina;
Предусмотрите этот случай и собирайте/возвращайте массив значений в таком случае. let o = {
message: 'Начальное значение'
};
f(o);
function f(o) { ... }
o.message = "Изменено в f";
o = {
message: "Новый объект!"
};
{
message: "Новый объект!"
}
<svg height="210" width="500">
<line x1="0" y1="0" x2="200" y2="200" style="stroke:rgb(255,0,0);stroke-width:2" />
</svg>