从原型访问对象属性

时间:2012-04-25 18:30:00

标签: javascript object prototype

我有一个为node.js包装mongodb客户端的类。我打电话给findUsers后面的课程我得到this.collection未定义。

如何从原型中访问this.collection

谢谢!

类别:

var Users;

Users = (function () {

    function Users(db) {

        db.collection('users', function (err, collection) {
           this.collection = collection;
        });
    }

    Users.prototype.findUsers = function (callback) {

        this.collection.find({}, function (err, results) {

        });
    }

    return Users;

})();

用法:

//db holds the db object already created
var user = new Users(db);
user.findUsers();

2 个答案:

答案 0 :(得分:3)

你在原型方法中正确地做了,你的错误在db.collection()的回调函数中。

var Users = (function () {
    function Users(db) {
        var that = this; // create a reference to "this" object
        db.collection('users', function (err, collection) {
            that.collection = collection; // and use that
        });
    }
    Users.prototype.findUsers = function (callback) {
        this.collection.find({}, function (err, results) {

        });
    }
    return Users;
})();

答案 1 :(得分:-1)

使用其他参考:

Users = (function(){
    var that = this;

    function users(db)
    {
         db.collection('users', function(err, collection)
         {
              that.collection = collection;
         }
    }
})();