之前有个代码是这样写的
function a(){
function b(){
}
...
b()
...
}
在a函数内建了b函数,并在合乎条件的情况下调用b函数现在想把b拿出来,要求作用域仍然属于a,不允许其他对象访问,我尝试这样写:
function a(){
...
b()
...
}
a.b=function(){
}但是执行a函数时出错,提示b没有定义,请问各位应该如何实现?
function a(){
function b(){
}
...
b()
...
}
在a函数内建了b函数,并在合乎条件的情况下调用b函数现在想把b拿出来,要求作用域仍然属于a,不允许其他对象访问,我尝试这样写:
function a(){
...
b()
...
}
a.b=function(){
}但是执行a函数时出错,提示b没有定义,请问各位应该如何实现?
arguments.callee.b()
}
a.b=function(){
}
或者 直接全局的就可以function a(){
b()
}
b=function(){
}
for (var property in source) {
destination[property] = source[property];
}
if (typeof source1 != undefined) {
for (var property1 in source1) {
destination[property1] = source1[property1];
}
}
return destination;
}function a()
{
//方法
}Object.extend(a,{
b:function()
{}
});这样也能达到你的目的
function b(){
}
...
window.b = b;
...
}b();
用prototype关键字
这样就行了吧。。
function a(){
//do something
}
a.prototype.b = function() {
//do something
}
var obj = new a();
obj .b();
1、主函数a可以在其代码内随意调用子函数b()
2、b也能够随意访问a内部定义的函数和对象
3、而b离开了a不可见,至少不能成为全局函数。我只能想到主函数a内建函数b的写法,这种写法最简单——体现在相互调用简单,但这种方法的缺点是:b写死了,无法动态修改b,我参考了很多文章都不能很好实现我的需求。我想请教大家能够替代内建函数——又能够动态修改/替换b函数的最接近的方法,或者直接告诉我不可能实现之原因。
function b(){
.......
b里面写要实现的方法
}
函数a为调用函数
function a(callback){
....调用b之前要执行的a的方法
callback;
}
执行函数(a函数,b函数封装好即可,只对外公开接口来供调用)
function test(){
a(b);//这里只是知道有个函数名是a还有个回调函数名是b,无需管里面的功能(具体功能有a,b函数处理)
}
function a(){
with(a)
b();
}
a.b = function(){
alert('bb');
}
a();
a.b();这样可以不?
...
a.b()
...
}
a.b=function(){
}
//构造函数a
function a() {
//声明私有变量_name, _age;
var _name = 'csdn',
_age = '13'; this.parm = '成员变量'; //b函数
this.b = function() {
alert('访问成员变量parm: ' + this.parm);
alert('访问私有变量name: ' + _name);
} //修改b函数方法,将私有变量以参数形式传入函数中
this.setB = function(fn) {
this.b = function() {
fn.call(this, _name, _age);
}
} //内部执行b函数
this.b();
} var ins = new a(); //外部执行b函数
ins.b(); //动态修改b函数
ins.b = function() {
//访问成员变量
alert('动态修改b函数后,访问成员变量parm: ' + this.parm); /*这里就不能访问到a构造函数中的私有变量_name了,
因为静态作用域是在函数声明时创建的,这里的静态作用域是全局的*/
//alert('动态修改b函数后,访问成员变量name: ' + _name);
} //执行修改后的b函数
ins.b(); //调用setB方法修改b函数,私有变量以参数形式访问
ins.setB(function(name, age) {
alert('动态修改b函数后,访问成员变量parm: ' + this.parm);
alert('动态修改b函数后,访问成员变量age: ' + age);
}) //执行修改后的b函数
ins.b();LZ看看符合你要求么