从原型访问对象属性

Access object properties from prototype

本文关键字:属性 对象 访问 原型      更新时间:2023-09-26

我有一个类,它为 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();

你在原型方法中做对了,你的错误在 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;
})();

使用另一个引用:

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