我想调用某个js方法里的方法

var a = function(){
    function b(){...}
    function c(){...}
}

如何调用了a方法里的c方法,而不会调用到b方法,如果实例化a方法的话,b方法是会被执行的

阅读 15.4k
6 个回答

不知道下面的代码能不能满足你的需求,你可以把b和c作为a函数的返回值:

var a = function() {
    function b() {...}
    function c() {...}
    
    return {
     b: b,
     c: c
    }
}
var obj = a();
obj.c();

首先,你得明白函数的执行方式

var a = (function(){
    var a = {
        b:function(){
            console.log('b');
        },
        c:function(){
            console.log('c');
        }
    }
    return a;

})();
a.c();//

我猜测你是要加命名空间,可以这样写:

(function(window){
    var a = window.a = {};
    a.b = function(){...}
    a.c = function(){...}
})(window);

调用的话,直接a.b() 即可。

这样写感觉有点坑, 写的js最好用对象的方法.

// 构造对象a a有方法b和c
var a = {
   b: function() {document.write('b')},
   c: function() {document.write('c')} 
}
// 调用函数
a.b();
a.c();

有些概念对我是模棱两可的,我觉得楼主提了个好问题,帮我重新疏理了一下盲点。

先说我的解决方法:

var temp=function a(){
    this.b=function b(){
        console.log('b');
    }
    this.b=function c(){
        console.log('c');
    }
}
var t=new temp();
t.b();

知识点疏理,
1.函数内部的变量又称私有变量或私有函数,是在外部访问不到的

function Test(){
    var color = "blue";//私有变量
    var fn = function(){} //私有函数
}

2.函数的属性称为静态变量,函数实例化的对象无法访问原型的静态变量

function Obj(){}
Obj.num = 72;//静态变量
Obj.fn = function(){}  //静态函数
alert(Obj.num);//72
alert(typeof Obj.fn)//function
var t = new Obj();
alert(t.name);//undefined
alert(typeof t.fn);//undefined

3.构造函数本身是无法访问其自身的值,实例化对象可以,

function Obj(){
    this.a=[]; //实例变量
    this.fn=function(){ //实例方法
    }
}
console.log(typeof Obj.a); //undefined
console.log(typeof Obj.fn); //undefined
var o=new Obj();
console.log(typeof o.a); //object
console.log(typeof o.fn); //function

我大概看了一下上面的解决方法,有函数返回值,构造对象,也有用闭包挂载到全局的,
我是看的这篇讲原型链和继承的文章:http://www.jb51.net/article/5...
以上

说实话,我不理解什么是不会运行b

var a = function() {
  function b() {
    console.log('b')
  }
  function c() {
    console.log('c')
  }
  c();
}
a(); // c
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题