var a = function(){
function b(){...}
function c(){...}
}
如何调用了a方法里的c方法,而不会调用到b方法,如果实例化a方法的话,b方法是会被执行的
var a = function(){
function b(){...}
function c(){...}
}
如何调用了a方法里的c方法,而不会调用到b方法,如果实例化a方法的话,b方法是会被执行的
首先,你得明白函数的执行方式
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
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
不知道下面的代码能不能满足你的需求,你可以把b和c作为a函数的返回值: