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但是如果有办法避免的话,我会非常感激的。我对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");
您没有将链的结果分配给任何对象,因此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原型继承为所有对象使用相同的函数实例。这样会更有效率。