javascript - 链接结束后返回一个对象

标签 javascript fluid chaining

我正在尝试制作一个流畅的模式,以便我可以将功能链接在一起。像下面这样的东西。但我想最后返回该对象。

var foo = new create();
foo.x("hello")
   .y("howdy!")
   .z("hello")
   .get_obj();

现在看来我得到了一个指向create()函数的指针/引用,这是因为我在每次函数调用后都会返回这个(我猜?)。我知道我可以做类似 var bar = foo.obj; 的事情,但如果有办法避免这种情况,我真的很感激。我对 Javascript 相当陌生,我之前使用过 Typescript,所以我的闭包知识有些有限,如果这就是问题所在的话。

function create() {
    this.obj = {}

    this.x = function(value) {
        this.obj["key_x"] = value;
        return this;
    }

    this.y = function(value) {
        this.obj["key_y"] = value;
        return this;
    }

    this.z = function(name) {
        this.obj["key_z"] = value;
        return this;
    }

    this.get_obj = function() {
        return this.obj;
    }
}

最佳答案

您没有将链的结果分配给任何东西,因此 foo 保持不变,并且仍然是 new create() 的结果。

也许你想这样做?

var foo = new create()
   .x("hello")
   .y("howdy!")
   .z("hello")
   .get_object();

那么 foo 应该是您期望的对象。

<小时/>

很难从示例代码中说出您的确切用例,但您可以编写一些更简洁的代码,如下所示:

function Create();
Create.prototype = {
    x: function(value) {
        this["key_x"] = value;
        return this;
    },

    y: function(value) {
        this["key_y"] = value;
        return this;
    },

    z: function(value) {
        this["key_z"] = value;
        return this;
    }
}

var foo = new Create()
   .x("hello")
   .y("howdy!")
   .z("hello");

关于javascript - 链接结束后返回一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37505391/

相关文章:

javascript - 使用 ng-class 和 ng-change 在元素中动态设置类

php - 验证表单中的电话号码....真的卡住了

javascript - 正则表达式匹配字符串格式为 @ 或 # 后跟点分隔的字符串,不包含空格

具有完整视口(viewport)高度的 CSS 流体网格布局

c++ - 使用 std::move 返回一个对象并链接函数

Node.js 上的 Javascript FAB 框架

javascript - 选中时的 jQuery 复选框操作

css - 如何设置图像编辑页面

Typo3 Fluid 模板无法使用 uri.resource 找到 css 文件

Android IsoDep 命令链失败