Я заметил, что при использовании bind
на объекте вы теряете возможность доступа к прототипу.Доступ к прототипу после использования привязки
function Foo(obj) {
this.fields = obj;
}
function Make(obj) {
return Foo.bind(Foo, obj);
}
var Test = Make({
name: 'Jeff'
});
console.log(Test.prototype);
Вот тот же самый пример, не используя bind
:
function Foo(obj) {
this.fields = obj;
}
function Make(obj) {
return Foo;
}
var Test = Make({
name: 'Jeff'
});
console.log(Test.prototype);
Есть ли способы обойти это?
Что вы на самом деле пытаетесь достичь? Нет никакого способа обойти это, поскольку вопрос написан, но если бы мы знали, ПОЧЕМУ вы хотите использовать привязку и получить доступ к прототипу, вы, вероятно, получите несколько ответов. –
, если вы видите [Спецификация языка ECMAScript®] (http://www.ecma-international.org/ecma-262/5.1/#sec-15.3.4.5): _NOTE Объекты функции, созданные с использованием функции.prototype.bind, не имеют свойство прототипа или [[Code]], [[FormalParameters]] и [[Scope]] внутренние свойства ._ – Grundy