将参数传递给JavaScript中的原型函数?
如何将一个对象从一个函数传递给它自己的原型类型的函数?将参数传递给JavaScript中的原型函数?
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()
小提琴:http://jsfiddle.net/GkHc4/
编辑1:
我试图做的功能链,每一个环节必须把以前的对象,并添加一些东西。在这一点上,这是一个实验。例如:
Main.Link1.Link2.link3(); //link3 it's a prototype for link2
//link2 it's a prototype for link1
//and so on...
其中每个环节增加了一键初始对象
回答:
我想,也许你正在寻找的东西像下面这样:
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)
回答:
我觉得你它在错误的方式去..你看:
- 的警报不是来自最后一行,而是来自原型行,当你做“新的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);
}
尽管这样,您将无法通过自己使用的功能。
回答:
有三种不同的问题:
1)你没有创建new Main()
一个对象,但尝试访问Sub
属性直接来自构造函数。这不起作用。你必须创建一个实例:
var main = new Main(); main.Sub; //<-- now you can access it
2)您尝试this
访问属性my_object
,但在任何函数之外。那也行不通。 this
可能会指向窗口对象,它没有任何属性,称为my_object
。解决办法可能是编写main.my_object
,但那样会打破原型的目的。通常你会在那里为每个实例放置相同的函数或属性。但是你试图在那里放置一个不同的财产。所以看起来你并不需要在所有访问原型,但可以只把它定义为一个普通的属性:
function Main() {
this.my_object = {"key":123};
this.Sub = new Sub(this.my_object);
}
3)行main.Sub
不执行任何东西。您只是要求酒店Sub
。当您编写new Sub(...)
时,将会执行功能Sub
。所以如果你想通过调用一个函数来提醒某些事情,你必须定义一个函数。你可以例如在Sub
或Sub.prototype
定义警报的方法,然后调用此方法:
function Sub(obj) {
this.alert() {
alert(obj);
}
}
main.Sub.alert();
updated Fiddle
以上是 将参数传递给JavaScript中的原型函数? 的全部内容, 来源链接: utcz.com/qa/260320.html