Да, тупанул.
|
Хотя нет, стоп, а где ты передаешь массив?
UPD Вижу, забыл добавит аргумент с массивом аргументов. |
Всё равно твоё решение херовое: возвращается экземпляр левого конструктора.
|
ну да, я немного не дописал:
Function.prototype.applyConstruct = function() { var F = function() {} F.prototype = this.prototype; this.apply( F = new F, arguments ); return F; } F = function() { this.a = 1; console.log( this, arguments )}; var a = F.applyConstruct( 1,2,3,4,5 ); alert( a instanceof F ); |
тему не читай
сразу отвечай Разве не достаточно сделать конструктуру call/apply в контексте свежего чистенького объекта, который он и вернет уже оформив в виде своего объекта? |
Цитата:
|
Цитата:
|
в скайпе ему, я предложил такой вариант:
function Foo( a, b, c ) { this.lala1 = a; this.lala2 = b; this.lala3 = c; } var b = Object.create( Foo.prototype ); Foo.apply( b, [ 1, 2, 3 ] ); alert( [ b.lala1 ] ); alert( b instanceof Foo ); |
Вообще Object.create как и bind не работают сами-знаете-в-чём.)
|
Цитата:
Function.prototype.construct = function (aArgs) { var fConstructor = this, fNewConstr = function () { fConstructor.apply(this, aArgs); }; fNewConstr.prototype = fConstructor.prototype; return new fNewConstr(); }; |
Часовой пояс GMT +3, время: 01:12. |