【问题标题】:How to call a function and pass a variable with period notation如何调用函数并使用句点符号传递变量
【发布时间】:2015-06-12 18:05:04
【问题描述】:

我以前见过这个,但不知道如何实际实现它。如何将具有此语法 foo.function() 的变量传递给函数,并将 foo 作为输入传递。 理想情况下,我希望它像这样工作

var foo = 'some string';

var myFunction = function(input){
    console.log(input);
}
foo.myFunction();

//should log 'some string'

我知道这可以通过 jquery 之类的 javascript 框架实现,我可以在其中拥有 somevar.myFunction()

我也知道我可以扩展一个预定义的对象,但我希望能够使用提供的任何 var 来运行这个函数。

【问题讨论】:

  • foo.function(foo) 有什么问题?此时,与对象关联的函数可能已经知道对象本身,因此传递 self 的实例有点奇怪。
  • 我不清楚你在问什么。请提供更完整的示例。
  • 如果您包含实际代码,则更容易判断发生了什么。这种奇怪的情况可能是大型设计问题的征兆。

标签: javascript function prototype


【解决方案1】:

您正在寻找的是Object.prototype。任何对象最终都链接到对象的prototype chain。这意味着,简而言之,只要一个对象不拥有属性,它就会检查它的原型。原型又是一个对象,以此类推。

例子:

Object.prototype.foo = function () {
    return "bar";
}

console.log("a string is an object".foo());

但是,在你真正知道自己在做什么之前不要开始使用它,因为它是 not necessarily good practice 来扩展原生对象的原型。

【讨论】:

  • 这正是我要找的,当你不知道要找哪些词时很难用谷歌搜索。谢谢你查看链接。
  • 你不必一直走到原型链的顶端,即对象的,你可以为 String.prototype.foo 做。 @Gerard 给出的最后一条建议仍然有效。
【解决方案2】:

我不太清楚你的意思。但是给定一个 JavaScript 中的自定义类型示例:

function SomeType() {
    this.someVar = null;
    this.newFunction = function() {
        //do something, for example:
        this.someVar = "Hello World!";
    };
}

var foo = new SomeType();
foo.newFunction();
alert(foo.someVar);

newFunction() 内部,使用this 标识符指的是实例foo。所以如果在newFunction 里面你写:

this.someVar = "Hello World!";

然后foo.someVar 将等于“Hello World!”。所以foo 不作为输入传递,而是使用this 固有地访问。

【讨论】:

    猜你喜欢
    • 2013-08-18
    • 2015-12-26
    • 2010-12-22
    • 2018-09-16
    • 2018-07-29
    • 2015-12-07
    • 2013-12-09
    • 1970-01-01
    • 2016-10-23
    相关资源
    最近更新 更多