我之前看过这个,但我不确定如何实际实现它。如何使用此语法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的情况下运行此函数。
答案 0 :(得分:1)
您要找的是Object.prototype
。最终,任何对象都链接到对象的prototype chain。换句话说,只要一个对象没有属性,它就会检查它的原型。反过来原型是一个对象,依此类推。
示例:
Object.prototype.foo = function () {
return "bar";
}
console.log("a string is an object".foo());
但是,在你真正知道自己在做什么之前不要开始使用它,因为扩展原生对象的原型是not necessarily good practice。
答案 1 :(得分:0)
我不确定你的意思。但是给出了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
固有地访问。