以两种不同的方式使用函数

Using a function in two different ways

本文关键字:方式使 函数 两种      更新时间:2024-03-20

我正在创建一个附加到其他函数的函数。

类似:

string("Hi").capitilize()//returns hi

我希望能够以两种不同的方式使用$$.string。1将其附加到函数。第二个是单独的功能:

string("Hi")

那应该只是回复嗨。但我得到的只是:[object Object]

允许我做第一个附加到函数的主要代码是:

var g = function (a) { 
        this._string = typeof a == "string" ? a : a.toString();
        return a;
}
var string = function (a) {
            return new g(a);
}

然后我有了另一个包含所有函数的变量,然后将其与原型绑定。

如果我只有字符串("嗨"),是否可以只返回字符串,并且如果添加了函数,仍然允许它们工作?

基本问题是函数无法判断返回值的去向。在计算.运算符时,函数的调用已经结束,因此您的代码在这一点上无法执行任何操作。

现在,您所能做的是返回一个在其原型上有toString()实现的对象,这样,当您的对象在将被视为字符串的情况下使用时,它将进行适当的转换。

var g = function (a) { 
        this._string = typeof a == "string" ? a : a.toString();
        return a;
}
g.prototype.toString = function() {
  return this._string;
}
var string = function (a) {
            return new g(a);
}
alert( new string("Hi") );