Прототип конструктора Javascript - PullRequest
0 голосов
/ 05 февраля 2012

Я пытаюсь собрать подобную версию Rails ActiveRecord в Javascript, используя подчеркивание и Mongodb. Есть кое-что, что я не могу обернуть головой относительно того, как вновь созданный объект может наследовать свой прототип от конструктора класса. Может быть, если я проиллюстрирую свою точку зрения, это будет проще:

var root = this;
var Database = root.Database = {};

// Require Underscore, if we're on the server, and it's not already present.
var _ = root._;
if (!_ && (typeof require !== 'undefined')) _ = require('./underscore');

Database.ActiveRecord = function(attributes){
    attributes || (attributes = {});
    this.attributes = {};
};

_.extend(Database.ActiveRecord.prototype, {
    idAttribute: '_id',
    test : 1,
});


var Client = Database.ActiveRecord;
var one = new Client();
console.log(one.prototype);

Прототип объекта не наследует объект Database.ActiveRecord.prototype. В чем может быть проблема?

1 Ответ

1 голос
/ 05 февраля 2012

Из экземпляра объекта прототип доступен через свойство constructor.prototype.

Итак, one.constructor.prototype === Client.prototype.

Кажется, вы просто проверяете неправильное свойство, должно быть one.constructor.prototype, а не one.prototype.

Также посмотрите на свойство __proto__ объекта экземпляра.

...