2016-07-06 3 views
0

Я проложил этот путь, чтобы расширить jQuery как класс ES6. Кажется, что все выполняет, но меня беспокоит скорость, поэтому я также проверил тест. Он может создать 1000 новых экземпляров себя менее чем за 0,5 секунды. Это должно использоваться в MOST для генерации строк таблицы, которые являются объектами (для сложных, обновления таблиц, которые сами не пустуют). Мне интересно, если есть лучший способ, чтобы наследовать Jquery прототипы, чем это this.__proto__ = $.extend(true, this.__proto__, this.__proto__.__proto__)Расширение jquery с ES6

class Popup extends jQuery.fn.init { 
    constructor() { 
    super('<div>test</div>'); 
    this.$wrapper = null; 

    this.__proto__ = $.extend(true, this.__proto__, this.__proto__.__proto__) 
    return this; 
    } 

    test() { 
    console.log('hi') 
    } 
} 

https://jsfiddle.net/ctyzaphw/3/

+1

1000 экземпляров принять 500мс? Это ужасно медленно. – Bergi

+1

Почему, по-вашему, 'extends $ .fn.init' недостаточно, чтобы наследовать методы jQuery? Btw, у jQuery только один прототип, я не уверен, почему вы используете множественное число здесь. – Bergi

+0

'$ .extend (true, this .__ proto__, this .__ proto __.__ proto __)', создавая глубокую копию, которая сама по себе является относительно медленным процессом, но просто из любопытства интересует, какую выгоду вы выберете из этого? – Rohit416

ответ

0

Thats интересный эксперимент. Но вы можете посмотреть Object.assign с es15. Полное описание доступно здесь: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

работ, принимая цель и источник Object.assign (цель, источник)

+0

Вы только что увеличили его скорость на 38% :) – Tester232323

+0

Черт, это заканчивается неудачей для дальнейших расширенных классов 'Uncaught TypeError: Конструктор классов. Всплывающее окно нельзя вызывать без 'new'' – Tester232323

+1

Если вы несетечно копируете класс. Эта копия также должна быть введена в действие. Классы могут вызываться только при вводе. поэтому popup2 = new Popup и т. д. –

Смежные вопросы