通过点前缀

时间:2016-10-31 06:12:34

标签: javascript

我想要做的事情应该非常简单但是我想我不理解基本概念并且让我更加困惑,而不是承认。

我希望通过“链接”将值传递给函数,而不是将值作为参数传递。

我希望能够做到这一点:

var formattedDate = myDate.convertTime()

而不是:

var formattedDate = convertTime(myDate);

在我的搜索中,我遇到了许多如何在对象中使用调用函数的示例,但它们总是从声明一个新对象开始,并调用该对象中的函数,该函数只是更新预定义的变量,如年龄,名称或位置就像在new Obj(name, age)中一样,在应用于我的情况时似乎并不是我正在寻找的东西。我真的很欣赏一些正确方向的指导。

2 个答案:

答案 0 :(得分:1)

您是否正在寻找以下内容

String.prototype.myFunction = function() {
    return this.toUpperCase();
}

var text = "sample text";

console.log(text.myFunction()); // calling user defined function 

小提琴:https://jsfiddle.net/mna7jxrs/

更新1:

例如,我们将日期字符串传递给 convertTime(),并将其转换为UTC字符串

Date.prototype.convertTime = function() {
    return this.toUTCString();
}

var date = new Date();

console.log(date); // Mon Oct 31 2016 11:56:57 GMT+0530 (India Standard Time)

console.log(date.convertTime()); // Mon, 31 Oct 2016 06:26:57 GMT

小提琴:https://jsfiddle.net/doc7gL2g/

答案 1 :(得分:1)

您要做的是向对象myDate添加方法。

假设myDate是由var myDate = new Date();创建的日期。

如果只想将其添加到当前对象,可以这样做:

var myDate=new Date();

myDate.convertTime = function() {
   console.log("I’m working on", this);
};

myDate.convertTime(); // -> see console

现在为了使它更通用,你想做我们称之为monkey patching的事情:

Date.prototype.convertTime = function() {
  console.log("I’m working on", this);
};

var myDate = new Date();
myDate.convertTime(); // -> see console

var myOtherDate = new Date();
myOtherDate.convertTime(); // -> see console

猴子补丁的工作笔:http://codepen.io/BuonOmo/pen/RGzYmz?editors=0012