将参数传递给javascript中的原型函数
pass parameter to a prototyped function in 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...
其中每个链接向初始对象添加一个密钥
有三个不同的问题:
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
。相反,函数Sub
将在您编写new Sub(...)
时执行。因此,如果你想通过调用一个函数来提醒一些事情,你必须定义一个函数。例如,您可以在Sub
或Sub.prototype
中定义一个警报方法,然后调用此方法:
function Sub(obj)
{
this.alert() {
alert(obj);
}
}
main.Sub.alert();
更新Fiddle
我认为您可能正在寻找以下内容:
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);
}
尽管如此,您将无法单独使用该函数。
相关文章:
- 使用方括号访问插件原型函数
- 使用setInterval调用原型函数时出现问题
- 无法从angularjs调用JavaScript原型函数
- AngularJS ng repeat显示原型函数未定义
- 在 Redux 状态下存储具有原型函数的对象
- Javascript 中的构造函数不会返回由原型函数传递的正确值
- JavaScript:在哪里放置原型函数
- 创建所有原型函数均可访问的局部变量
- 可以'这'在原型函数中未定义
- 使用特权Getter/Setter函数的JavaScript原型函数
- Javascript、node、Q promise、原型函数和“;这个“;
- 在Javascript中将对象原型函数绑定到对象
- 从node.js模块中向JSON添加原型函数
- 从另一个(包括其自身)触发一个原型函数
- Javascript原型继承原型函数调用
- JavaScript–从另一个原型函数调用原型的一个函数
- 访问原型函数中的私有成员
- 如何在AngularJS中将依赖关系传递给原型函数
- 这两种用 JavaScript 编写原型函数的方式有什么区别?
- 为什么不能使用lambda来定义原型函数