let obj = {
_v: 0,
get value() {
console.log("I've been read. I'm", this._v);
return this._v;
},
set value(v) {
this._v = v;
console.log("I've been written. I'm", this._v);
}
}
obj.value = 12; // I've been written. I'm 12
let v = obj.value; // I've been read. I'm 12
while (true) {
console.log(1);
}
и отсюда уже не выходит.function startTimer(cb) {
var timer = {running: true};
function interval() {
if (timer.running === false) return;
console.log('tick: ', (new Date()).toISOString());
cb();
setTimeout(interval, 1100 - (Date.now() + 100) % 1000);
}
setTimeout(interval, 1100 - (Date.now() + 100) % 1000);
return timer;
}
function stopTimer(timer) {
timer.running = false;
}
// test
function payload() {
var start = Date.now();
for (var i = 0; i < 10000000; i++); // нагрузка
var stop = Date.now();
console.log('payload:', stop - start)
}
var timer = startTimer(payload);
function Figure(name) {
this._name = name;
}
Figure.prototype.getName = function () {
return this._name;
};
// проксируем
function WrapFigure(name) {
var obj = Object.create(Figure.prototype);
Figure.apply(obj, arguments);
// что-то делаем
return obj;
}
// проверяем
var cir = new WrapFigure('Circle');
var name = cir.getName();
console.log(name);
// все работает!
arguments.calleeкрайне не рекомендуется, т.к. не работает в 'use strict'
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test</title>
</head>
<body>
<script>
(function loadHtmlParts() {
'use strict';
var xhr = new XMLHttpRequest();
xhr.open('GET', 'common.js', true);
xhr.onload = function() {
if (this.status !== 200) {return}
var script = document.createElement("script");
script.innerHTML = this.responseText;
document.head.appendChild(script);
// и вот здесь вызываем функцию после загрузки и выполнения скрипта
myFunk();
};
xhr.send();
})();
</script>
</body>
</html>
function myFunk(){
console.log('myFunk has been called!');
}
// Вариант 1. Привязываем контекст и первые по порядку параметры
function someFunk(a, b, event) {
console.log(a, b, event);
}
element.addEventListener('click', someFunk.bind(null, 1, 2));
// Вариант 2. Используем интерфейс EventListener
function someFunk(event) {
console.log(this.a, this.b, event);
}
element.addEventListener('click', {handleEvent: someFunk, a: 1, b: 2});