在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();