调用某个js方法里的方法

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

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

解决方案:

1  

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

 2

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

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

 3     用闭包挂载到全局?

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

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

4    这样写感觉有点坑, 写的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.函数的属性称为静态变量,函数实例化的对象(var  f=new fn();)无法访问原型的静态变量

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

我大概看了一下上面的解决方法,有函数返回值,构造对象,也有用闭包挂载到全局的。

 

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值