const result = 10 * 10 + 15 * 2;
console.log(result);
console.log(sum(square(10), double(15)));
Calculator
после создания хранит в себе состояние: this.VAT = 22
. И все последующие методы этого класса работают с этим состоянием (контекстом класса).VAT
, и Вам сразу же станет понятно в чём различие. Ибо в первом примере Вы будете напрямую изменять this.VAT
, и использовать его потом. А во втором примере, Вам придётся прокидывать значение VAT
параметром, нигде его не храня.Rx.Observable.from(items)
). const random = {
intFromInterval: (min, max) => Math.floor(Math.random() * (max - min)) + min,
intFromZero: (max) => Math.floor(Math.random() * max),
};
console.log(random.intFromInterval(55, 66));
(function() {
// your code there
})();
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
document.body.appendChild(canvas);
canvas.width = 500;
canvas.height = 500;
class Square{
constructor(color, position, size, speed){
this.color = color;
this.x = position.x;
this.y = position.y;
this.speed = speed || {x:0,y:0};
this.width = size.width;
this.height = size.height
}
render(ctx){
this.x += this.speed.x;
this.y += this.speed.y;
ctx.fillStyle = this.color;
ctx.fillRect(this.x, this.y, this.width, this.height);
}
}
const player = new Square('#f00', {x:100,y:100}, {width:16, height:16});
const deltaCoord = 5;
const canvasColor = '#fff';
Rx.Observable
.fromEvent(document, 'keydown')
.map(
e => {
const s = {x:0,y:0}
if (e.keyCode == 37) s.x -= deltaCoord;
if (e.keyCode == 38) s.y -= deltaCoord;
if (e.keyCode == 39) s.x += deltaCoord;
if (e.keyCode == 40) s.y += deltaCoord;
console.log(s)
return s;
}
)
.startWith({x:0,y:0})
.subscribe(render);
function render(direction) {
ctx.fillStyle = canvasColor;
ctx.fillRect(0, 0, canvas.width, canvas.height);
player.speed = direction;
player.render(ctx);
}
this.renderer.createElement('svg');
this.renderer.createElement('svg', 'svg');
this.renderer.createElement('circle');
this.renderer.createElement('circle', 'svg');
Мне этот механизм не понятен.
Как это можно понять, это документированная возможность?
Есть родительский класс и есть дочерний класс.
Есть ли причины так не делать?
Array.from(new Set(sourceArray]))
Прежде всего мне непонятно зачем происходит сравнение с index.
true
ровно один раз - так как indexOf
возвращает первый индекс, по которому можно найти элемент, равный указанному. То есть, если indexOf
текущего элемента равен текущему индексу, значит элемент встречен впервые, и его надо оставить. Проблема в том, что если элемент пометить #name и после этого пытаться в родительском элементе получать его через @ViewChild, то элемент не находится потому что, как я выше говорил, элементы появляются и пропадают динамически
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent extends HelloComponent { // Вот тут
name = 'Angular 6';
constructor() {
super(); // Первый console.log('...')
console.log('constructor app');
}
}
<hello name="{{ name }}"></hello> // Второй console.log('...')
<p>
Start editing to see some magic happen :)
</p>