javascript - 如何将功能链接成一个句子

标签 javascript html

所以我必须编写一个程序,它可以像这样链接函数: name("Adam").place("cinema").movi​​e("xxx") 预期输出应该是这样的:Adam goes to Cinema to watch movie called xxx, what i so far:

    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"));

但它给了我不同行的字符串,我想用一句话来表达,任何帮助将不胜感激。

最佳答案

你可以这样做:

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()

Every object has a toString() method that is automatically called when the object is to be represented as a text value or when an object is referred to in a manner in which a string is expected. By default, the toString() method is inherited by every object descended from Object. If this method is not overridden in a custom object, toString() returns "[object type]", where type is the object 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")}`);

关于javascript - 如何将功能链接成一个句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43440822/

相关文章:

html - anchor ,按钮不是通过相等的填充水平

php - 如何使用 heatmap.js 保存 canvas 标签生成的图像文件?

javascript - 如何使用 jQuery 隐藏和显示 div 的一部分

javascript - 如何动态对齐圆内的文本?

javascript - Jquery/Canvas/.animate/页面需要重新加载/Internet Explorer

javascript - 我希望表格在搜索时显示隐藏行并在删除输入时隐藏它们?

javascript - 在给定特定条件的情况下删除特定字符串的部分的算法

javascript - 在 Javascript 中按数组中的多个对象排序

javascript - 选择一个标签并使用 jquery 更改其文本

javascript - html, css, javascript - 电子书(文本)阅读器