请问在一个命名空间中,可不可以在空间下函数中调用空间下的其它函数?

时间:2021-05-04 08:33:55
下面是例1好,还是例2好,还是命名空间里根本不允许有这样的调用,需要重新设计,把f2的结果设计成f1的参数的方式?
例1:
var M={
   f1:function(){
      var a=this.f2()
      return a
   },
   f2:function(){
   }
}

例2:
var M={
   f1:function(){
      var a=M.f2();
      return a
   },
   f2:function(){
   }
}

7 个解决方案

#1


我们一般说:这是我的老婆
但是我们不会说:只是某某的女儿

#2


呵呵 KK3K2005 我知道你的意思,知道要是自己设计代码解耦,去掉依赖 肯定例1和例2好
我想问问在有没有专门的规定,禁止在js的大型接口程序中的命名空间下的函数中调用其它函数?

#3


把函数放到不同的闭包中,它们之间就不能互相调用了

#4


你到底知不知this是什么东东。  this到什么地方去。
命名空间 非要{}做吗?  函数就不能做吗?

#5


对象已确定(instance),那还有this.  
{}is instance of Object. 
Object = function(){XX}.
this是给那种没确定对象的人用的。

#6






引用 2 楼 xinfucheng 的回复:
呵呵 KK3K2005 我知道你的意思,知道要是自己设计代码解耦,去掉依赖 肯定例1和例2好
我想问问在有没有专门的规定,禁止在js的大型接口程序中的命名空间下的函数中调用其它函数?


所以说 一般很多程序都有类似 includ import use 之类的关键字 指定当前代码要依赖的外部代码
根据指定的依赖关系 会进行加载前的预处理
js没有直接提供  但是精神是不变的 
所以有个 JS的AMD规范
requirejs 还有 node.js都是依据这个规范实现的

有时间看下这个 AMD规范

#7


两个例子都可以正常执行,所以单纯的讲两个例子 哪个好一些,个人感觉意义不大。
写法的好坏取决于具体的执行环境。

如果只就调用对象其他属性或方法而言:
例1中的this会根据具体的执行环境和调用对象而有所变化。
例2中只要保证调用该方法的是M,就可以正确调用M的其他方法或属性,相对例1而言更稳定一些。

#1


我们一般说:这是我的老婆
但是我们不会说:只是某某的女儿

#2


呵呵 KK3K2005 我知道你的意思,知道要是自己设计代码解耦,去掉依赖 肯定例1和例2好
我想问问在有没有专门的规定,禁止在js的大型接口程序中的命名空间下的函数中调用其它函数?

#3


把函数放到不同的闭包中,它们之间就不能互相调用了

#4


你到底知不知this是什么东东。  this到什么地方去。
命名空间 非要{}做吗?  函数就不能做吗?

#5


对象已确定(instance),那还有this.  
{}is instance of Object. 
Object = function(){XX}.
this是给那种没确定对象的人用的。

#6






引用 2 楼 xinfucheng 的回复:
呵呵 KK3K2005 我知道你的意思,知道要是自己设计代码解耦,去掉依赖 肯定例1和例2好
我想问问在有没有专门的规定,禁止在js的大型接口程序中的命名空间下的函数中调用其它函数?


所以说 一般很多程序都有类似 includ import use 之类的关键字 指定当前代码要依赖的外部代码
根据指定的依赖关系 会进行加载前的预处理
js没有直接提供  但是精神是不变的 
所以有个 JS的AMD规范
requirejs 还有 node.js都是依据这个规范实现的

有时间看下这个 AMD规范

#7


两个例子都可以正常执行,所以单纯的讲两个例子 哪个好一些,个人感觉意义不大。
写法的好坏取决于具体的执行环境。

如果只就调用对象其他属性或方法而言:
例1中的this会根据具体的执行环境和调用对象而有所变化。
例2中只要保证调用该方法的是M,就可以正确调用M的其他方法或属性,相对例1而言更稳定一些。