调用某个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
我大概看了一下上面的解决方法,有函数返回值,构造对象,也有用闭包挂载到全局的。