JavaScript: Как создать новый экземпляр класса, не используя новое ключевое слово?

Я использую этот код, чтобы помешать моей рабочей станции блокировать. Это в настоящее время только установлено переместить мышь один раз в минуту, Вы могли легко скорректировать его все же.

Это - взлом, не изящное решение.

import java.awt.*;
import java.util.*;
public class Hal{

    public static void main(String[] args) throws Exception{
        Robot hal = new Robot();
        Random random = new Random();
        while(true){
            hal.delay(1000 * 60);
            int x = random.nextInt() % 640;
            int y = random.nextInt() % 480;
            hal.mouseMove(x,y);
        }
    }
}
22
задан 5 revs, 4 users 100% 28 September 2016 в 11:51
поделиться

3 ответа

Это не работает?

function factory(class_) {
    return new class_();
}

Я не понимаю, почему вы не можете использовать новый .

19
ответ дан 29 November 2019 в 03:50
поделиться

Если вы действительно не хотите использовать ключевое слово new , и вы не против поддержки только Firefox, вы можете установить прототип сами. На самом деле в этом нет никакого смысла, поскольку вы можете просто использовать ответ Дэйва Хинтона.

// This is essentially what the new keyword does
function factory(clazz) {
    var obj = {};
    obj.__proto__ = clazz.prototype;
    var result = clazz.call(obj);
    return (typeof result !== 'undefined') ? result : obj;
};
7
ответ дан 29 November 2019 в 03:50
поделиться

Я думаю, что независимое решение браузера будет лучше

function empty() {}

function factory(clazz /*, some more arguments for constructor */) {
    empty.prototype = clazz.prototype;
    var obj = new empty();
    clazz.apply(obj, Array.prototype.slice.call(arguments, 1));
    return obj;
}
3
ответ дан 29 November 2019 в 03:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: