在javascript中将参数传递给原型函数?

在javascript中将参数传递给原型函数?,javascript,prototype,Javascript,Prototype,如何将对象从函数传递到它自己的原型函数 function Main() { this.my_object = {"key":123}; } Main.prototype.Sub = new Sub(this.my_object); function Sub(obj) { alert(obj); } Main.Sub; //this should alert the object created in Main() 小提琴: 编辑1: 我正在尝试创建一个函数链,每个链接都必

如何将对象从函数传递到它自己的原型函数

function Main()
{
    this.my_object = {"key":123};
}

Main.prototype.Sub = new Sub(this.my_object);

function Sub(obj)
{
    alert(obj);
}

Main.Sub; //this should alert the object created in Main()
小提琴:

编辑1:

我正在尝试创建一个函数链,每个链接都必须获得前一个对象并添加一些内容。在这一点上,这是一个实验。例如:

Main.Link1.Link2.link3();

//link3 it's a prototype for link2
//link2 it's a prototype for link1
//and so on...

每个链接都会向初始对象添加一个键

我认为您使用的方式不对。。你看,

  • 警报不是来自最后一行,它实际上是来自原型行,当您执行“new Sub”时
也许更好的方法是:

function Main()
{
    this.my_object = {"key":123};
}

Main.prototype.Sub =  Sub; //You set the prototype, but don't actually execute the function

function Sub(obj)
{
    alert(obj);
}

var m = new Main(); //You need to create a new object of type Main in order for it to have access to the method Sub
m.Sub(m.my_object); //this should alert the object created in new Main()
这有用吗

编辑

此外,您甚至可以对子函数执行以下操作:

function Sub() {
   alert(this.my_object);
}

尽管如此,您将无法单独使用该函数。

我认为您可能正在寻找以下类似的功能:

function Main()
{
    this.my_object = {"key":123};
}

Main.prototype.Sub = function () {
    Sub(this.my_object);
};

function Sub(obj)
{
    alert(obj);
}

var main = new Main();  // main object is created with main.my_object property
main.Sub();  // this will do alert(main.my_object)

有三个不同的问题:

1) 您不会使用
newmain()
创建对象,而是尝试直接从构造函数访问
Sub
属性。这不管用。您必须创建一个实例:

var main = new Main();
main.Sub; //<-- now you can access it 
3) 行
main.Sub
不执行任何操作。您只是请求属性
子项
。相反,当您编写
new Sub(…)
时,将执行函数
Sub
。所以,如果你想通过调用函数来提醒某些事情,你必须定义一个函数。例如,您可以在
Sub
Sub.prototype
中定义警报方法,然后调用此方法:

function Sub(obj)
{
    this.alert() {
        alert(obj);
    }
}

main.Sub.alert();

您试图解决的实际问题是什么
Main
是一个函数对象。如果希望能够访问
Main.Sub
,则必须首先分配给
Main.Sub
new Sub(此.my_对象)
这个
指的是这里的
窗口
对象。耶!就这样。非常感谢你!谢谢你的回答!它确实为我澄清了某些事情!
function Sub(obj)
{
    this.alert() {
        alert(obj);
    }
}

main.Sub.alert();