Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在链接后的末尾返回一个对象_Javascript_Fluid_Chaining - Fatal编程技术网

Javascript 在链接后的末尾返回一个对象

Javascript 在链接后的末尾返回一个对象,javascript,fluid,chaining,Javascript,Fluid,Chaining,我正在尝试制作一个流体模式,这样我就可以将函数链接在一起。下面是这样的。但我想在最后返回对象 var foo = new create(); foo.x("hello") .y("howdy!") .z("hello") .get_obj(); 现在,我似乎得到了一个指向create()函数的指针/引用,这是因为我在每次函数调用后都会返回它(我猜是吧?)。我知道我可以做一些事情,比如var bar=foo.obj

我正在尝试制作一个流体模式,这样我就可以将函数链接在一起。下面是这样的。但我想在最后返回对象

var foo = new create();
foo.x("hello")
   .y("howdy!")
   .z("hello")
   .get_obj();
现在,我似乎得到了一个指向
create()
函数的指针/引用,这是因为我在每次函数调用后都会返回它(我猜是吧?)。我知道我可以做一些事情,比如
var bar=foo.obj
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");

您没有将链的结果分配给任何对象,因此
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");

你的问题是什么还不清楚。你的代码很好用,不是吗?
[“key_z”]
很难说。key_z
是的,我知道。我想知道是否有一种方法可以在末尾返回对象
this.obj
,而不是获取指向
create()
函数的指针。您已经通过
get_obj()
获得了对象,为什么要将属性分配给
this.obj
,而您只需将属性分配给
this
,如
this[“key\u x”]=价值?这样你就不需要
.get_obj()
方法了。你的问题是什么还不清楚。你的代码很好用,不是吗?
[“key_z”]
很难说。key_z
是的,我知道。我想知道是否有一种方法可以在末尾返回对象
this.obj
,而不是获取指向
create()
函数的指针。您已经通过
get_obj()
获得了对象,为什么要将属性分配给
this.obj
,而您只需将属性分配给
this
,如
this[“key\u x”]=价值?这样你就不需要
.get_obj()
方法了。你能解释一下原因吗?我觉得是一样的。还要注意
get_obj
(在函数核心中)和
get_object
(在外部)打字错误。这正是我想要的!现在一切都有意义了。如果你在构造函数中使用
this.x=function
创建函数,那么JS运行时实际上会为每次调用
new create()
创建一个新函数。将其分配给
原型
使用JS原型继承为所有对象使用相同的函数实例。这样会更有效率。你能解释一下原因吗?我觉得是一样的。还要注意
get_obj
(在函数核心中)和
get_object
(在外部)打字错误。这正是我想要的!现在一切都有意义了。如果你在构造函数中使用
this.x=function
创建函数,那么JS运行时实际上会为每次调用
new create()
创建一个新函数。将其分配给
原型
使用JS原型继承为所有对象使用相同的函数实例。这样会更有效率。