На днях я играл в Javascript, и я заметил, что я не могу написать прототип объекта в прототипе функции. Например:Javascript вложенные прототипы
var obj = function() { }
obj.prototype.First = function() {
this.prototype.Second = function() {
alert("Second Prototype");
}
}
obj.First();
obj.Second();
По какой-то причине второй прототип не будет работать и код не будет работать. Является ли мой синтаксис неправильным или существуют некоторые ограничения прототипа, о которых я не знаю? Благодаря!
Edit:
Я не пытаюсь добавить прототип прототипа ... что бы не имеет особого смысла. Это то, что я пытаюсь сделать: добавьте два отдельных прототипа в obj. Прототип 2 определяется при вызове прототипа 1. Я думал, что this
будет содержать ссылку на объект, поэтому this.prototype
будет таким же, как obj.prototype
, но он не работает должным образом.
Почему бы просто не использовать 'obj.prototype.Second = ...'? –
Вы вводите в заблуждение функции и экземпляры. – SLaks
'obj' - это функция. 'obj.prototype' является свойством функции и используется только при вызове функции с помощью' new'. Например. 'var foo = new obj();'. 'foo.First' теперь будет доступен, потому что' obj.prototype' является прототипом 'foo'. Однако 'obj.First' не может работать, потому что вы никогда не создавали свойство' First' на 'obj'. –