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