如何在javascript中从原型访问对象属性?

Sumit Deshpande

当我调用printData时,我在下面有一个类,但我得到this.collection是未定义的。

如何从printData()中的原型访问this.collection?还是我需要更改类结构。实际上,对象返回的函数是实习生按层次结构返回对象的函数。

提前致谢!

样本类别:

var DbProvider = (function () {
    function DbProvider(db) {
        var that = this; // create a reference to "this" object
        that.collection = db;
    }
    DbProvider.prototype.create = function () {
        return {
            action: function () {
                var y = {
                    printData: function () {
                        alert('Hello ' + this.collection.Name);
                    }
                };
                return y;
            }
        };
    };
    return DbProvider;
})();

用法:

var a = new DbProvider({ "Name": "John" });
a.create().action().printData();
塔格尼兹

您可以保存this引用并将其绑定到printData函数

var DbProvider = (function () {
    function DbProvider(db) {
        var that = this; // create a reference to "this" object
        that.collection = db;
    }
    DbProvider.prototype.create = function () {
        var self = this;
        return {
            action: function () {
                var y = {
                    printData: function () {
                        alert('Hello ' + this.collection.Name);
                    }.bind(self)
                };
                return y;
            }
        };
    };
    return DbProvider;
})();

var a = new DbProvider({ "Name": "John" });
a.create().action().printData();

或者,您可以稍微重构一下,移到that的外部范围DbProviderthat在其中使用printData

var DbProvider = (function () {
    var that;
    function DbProvider(db) {
        that = this; // create a reference to "this" object
        that.collection = db;
    }
    DbProvider.prototype.create = function () {
        return {
            action: function () {
                var y = {
                    printData: function () {
                        alert('Hello ' + that.collection.Name);
                    }
                };
                return y;
            }
        };
    };
    return DbProvider;
})();

var a = new DbProvider({ "Name": "John" });
a.create().action().printData();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在javascript中访问对象属性?

来自分类Dev

如何从javascript类中访问原型属性?

来自分类Dev

Javascript中的对象原型属性

来自分类Dev

Javascript中的对象原型属性

来自分类Dev

javascript中对象的原型属性

来自分类Dev

如何在Vue原型中访问路由对象?

来自分类Dev

如何在函数对象javascript中访问属性函数

来自分类Dev

如何在Javascript中访问嵌套对象的属性?

来自分类Dev

访问Javascript对象原型

来自分类Dev

访问javascript对象的原型

来自分类Dev

如何获得Javascript对象原型的属性?

来自分类Dev

Javascript 对象的原型属性

来自分类Dev

如何在javascript中的对象内访问对象中的对象?

来自分类Dev

如何在Javascript中访问JSON对象?

来自分类Dev

如何在JavaScript中访问对象?

来自分类Dev

在 JavaScript 中,如何访问对象数组中的对象属性?

来自分类Dev

如何在原型中读取json对象

来自分类Dev

如何从javascript访问php对象数组中的php对象属性

来自分类Dev

如何在javascript中更新对象的属性?

来自分类Dev

如何在JavaScript对象中定位属性

来自分类Dev

javascript引擎如何在具有原型的对象上设置属性,而该对象具有该属性的设置器?

来自分类Dev

在Javascript中访问对象的属性

来自分类Dev

在Javascript中访问对象的属性

来自分类Dev

在javascript中访问对象属性

来自分类Dev

如何在Matlab系统对象的属性块中访问变量?

来自分类Dev

如何在Meteor中访问从Mongo查询的对象的属性

来自分类Dev

如何在jQuery事件函数中访问对象属性

来自分类Dev

如何在动作脚本中访问对象属性

来自分类Dev

如何在Laravel PHP中访问对象的属性?

Related 相关文章

热门标签

归档