[英]How to access a function wihtin another function when added as property?
我需要从c调用函数b。 我正在使用以下代码,但收到错误消息。 你能告诉我这里有什么问题吗?
var a = function() { this.b = function() { alert('b'); }; }; var c = function() { ab(); }; c();
您可以使用new
运算符创建一个实例。
var a = function() { this.b = function() { alert('b'); }; }; var c = new a; cb();
另一种方法是向函数添加属性,然后在不使用新实例的情况下调用它。
var a = function() {}; ab = function() { alert('b'); }; var c = function() { ab(); }; c();
该b
是不可见的a
你用哪个。 要访问它,你需要创建的对象a
,因为你添加b
到this
。 这意味着它将在类型为a
的object
上可见。
var a = function() { this.b = function() { alert('b'); }; }; var c = function() { new a().b(); // on the object }; c();
最好是有b
为原型函数而不是内部构造吧,因为每次创建新的对象a
,新的功能实例b
将被创建。 与原型只有一个函数实例将跨越所有对象实例保持a
。
var a = function() {
};
a.prototype.b = function() {
alert('b');
};
现在,您可以访问b
通过创建新实例a
(new a()).b();
您应该检查this
关键字在javascript中的工作方式。 在你的代码, this
在a
函数为界,全局对象,可呈现为window
的浏览器,因此:
var a = function() {
this.b = function() {
alert('b');
};
};
a();
window.b(); //will do the alert
正如其他答案所述,仅通过使用a
函数创建一个对象就可以完成您尝试做的事情,或者使用:
var a = function() {
return {
b : function(){
alert('b');
}
}
};
a().b(); //alert
或使用new
关键字:
var a = function() {
this.b = function() {
alert('b');
};
};
var obj = new a();
obj.b();
但是,值得一提的是,您无需显式创建对象即可实现此行为。 您还可以设置b
成员,它是一个函数,与a
函数绑定:
var a = function() {
//some code
};
a.b = function() {
alert('b');
};
a.b();//alert
您要在问题中尝试做的事情更多。 您可以执行此操作,是因为javascript中的函数是可执行对象-但是,显式返回对象并使用比将成员附加到函数更好,恕我直言。
您的原始函数是一个构造函数 ,因此在调用其成员函数b之前,需要使用'new'关键字创建一个实例。
var A = function() { this.b = function() { alert('b'); }; }; var c = function() { var _ = new A(); _.b(); }; c();
var a = function() {
this.b = function() {
alert('b');
};
return this;
};
var c = function() {
a().b();
};
c();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.