所以我必须编写一个程序,它可以链接这样的函数: 名字("亚当")。地方("电影")。电影(" xxx")预期输出应该是这样的:亚当去看电影看电影叫xxx,到目前为止我所拥有的:
var test = function(name){
var self = {};
console.log(name)
function someFunc(where) {
console.log("goes to cinema" + where)
return self;
}
function someOtherFunc(what) {
console.log("to watch movie" + what)
return self;
}
self.someFunc = someFunc;
self.someOtherFunc = someOtherFunc;
return self;
}
console.log(test("Adam").someFunc("cinema").someOtherFunc("xxx"));
但它给了我不同的字符串,我想用一句话来表达,任何帮助都会受到赞赏。
答案 0 :(得分:1)
假设您需要按照该顺序执行功能,并生成一个不按顺序变化的句子,您可以执行以下操作:
var test = function(name){
var self = {
message: name,
};
function someFunc(where) {
self.message += " goes to cinema" + where;
return self;
}
function someOtherFunc(what) {
self.message += " to watch movie" + what;
console.log(self.message);
}
self.someFunc = someFunc;
self.someOtherFunc = someOtherFunc;
return self;
}
console.log(test("Adam").someFunc("cinema").someOtherFunc("xxx"));
答案 1 :(得分:1)
您可以这样做:
var test = function(message) {
this.someFunc = function(where) {
message += ` goes to ${where}`;
return this; // Allow chaining
}
this.someOtherFunc = function(what) {
message += ` to watch movie ${what}`;
return this; // Allow chaining
}
this.value = function() {
return message; //End chain
}
return this; // Start chain
}
console.log(test("Adam").someFunc("cinema").someOtherFunc("xxx").value());
//Adam goes to cinema to watch movie xxx
是否可以在没有.value()
的情况下获得该结果?
您可以覆盖.toString()
。
每个对象都有一个自动调用的toString()方法 该对象将表示为文本值或对象是 以预期字符串的方式引用。默认情况下 toString()方法由来自Object的每个对象继承。 如果在自定义对象中未覆盖此方法,则toString() 返回“[object type]”,其中type是对象类型。
这需要将对象转换为字符串。
var test = function(message) {
this.someFunc = function(where) {
message += ` goes to ${where}`;
return this;
}
this.someOtherFunc = function(what) {
message += ` to watch movie ${what}`;
return this;
}
this.toString = function() {
return message;
}
return this;
}
console.log(`${ test("Adam").someFunc("cinema").someOtherFunc("xxx")}`);