这是我的示例代码......
one();
function one()
{
function abc()
{
//code
}
function bcd()
{
//code
}
abc();
bcd();
}
这是关于php,javascript.i想要使用或不使用面向对象的编程技术来构建这个代码易于阅读的方式。
如何从外部函数调用函数abc ..?
答案 0 :(得分:1)
示例中的嵌套函数在函数范围内,并在函数one()完成后被抛弃;所以他们没有曝光。
可以使用闭包来公开函数... How do JavaScript closures work? ... http://www.sitepoint.com/javascript-closures-demystified/ ...但是给出简单示例的最简单方法是使用函数创建的abc命名空间。 / p>
function abc() {
abc.def = function () {alert("hello")}
}
abc(); // add def function to abc namespace.
abc.def(); // call def function which is part of the abc object.
为避免对象表示法,可以将变量传递给函数。
function abc(operator) {
function def() {alert("hello")}
if (operator == def) {def()}
}
abc("def");
然而,这比使用对象表示法更难阅读,因为我需要查看函数来确定abc.def()告诉我我正在调用def()这是abc的一部分。并且它会导致性能下降,因为需要在每次调用时重新创建def。
答案 1 :(得分:1)
有多种方式:
// when using one() as a constructor for an object
function one()
{
this.abc = function() { };
this.def = function() { };
}
obj = new one();
obj.abc();
// prototype
function one()
{
}
one.prototype.abc = function() { };
one.prototype.def = function() { };
obj = new one();
obj.abc();
// module pattern
function one()
{
var abc = function () { };
var def = function () { };
return {
abc: abc,
def: def
}
}
obj = one();
obj.abc();
// or just assign it as a property to your function
function one()
{
}
one.abc = function() { }
one.def = function() { }
one.abc();
选择适合你的任何东西。