js的对象都有一个构造函数 alert((1).constructor) alert((false).constructor) alert(('').constructor)var 对象 = new 构造函数();创建对象的第一步就是执行其构造函数。
将变量放在函数中访问,就取到命令空间的作用 (function() { var a = 1; var b = 2; .... })();你可以参考一下js比较流行的几个框架的封装,比如jquery。
1.用了大写就不对了。这里是javascript匿名类实例化的写法(java也有相同用法) 2. function Test() { // 这里可以看成是构造函数所以肯定是执行的} 3.完全没有问题 4.不可行。首先javascript为了避免变量冲突,每个js文件都应该在外面套一层 (function(){ //这里写代码,这个Index在其他的js文件中将不能引用。 var index = 1; // 不用var,代表所有文件中都可以引用。所以,一般做法是将类不用var,暴露在外面。不想暴露的用var限制 Test = function() {};})(); 其次,javascript中间没有命名空间这个功能,但是可以模拟实现 (function(){ net = {};net.Test = function() {};})();// 其他js文件或者html中 var obj = new net.Test();
var XX = {}; //XX为命名空间名称 XX.fun = function(){ //你的函数名 alert("x"); }; XX.fun(); //调用
这段代码容易让人误解。你必须知道, 第一,js可以定义匿名函数, 第二,function关键字定义的东西可以,也只有其才可以new出新的object。 你的代码实际上是定义了一个匿名函数,而后用这个函数new出一个新的object。目前的js没有namespace的概念,所以,目前namespace在js里,实际上是用object包裹一遍来实现的,比如 var Douban={}; //Douban实际起到了类似于namespace的作用 Douban.func=function(){};
这种定义方法比较无聊,我们为什么用class或者prototype来造对象?无非是因为这些class或者prototype要使用很多次,是所谓的“模具”,而你例子里的这种方式,实际上“模具”被匿名了,也就是只能是用一次,那又是何必,不用模具,直接造对象不行吗? var obj={}; obj.prop1=1; obj.func1=function(){};
alert((1).constructor)
alert((false).constructor)
alert(('').constructor)var 对象 = new 构造函数();创建对象的第一步就是执行其构造函数。
(function() {
var a = 1;
var b = 2;
....
})();你可以参考一下js比较流行的几个框架的封装,比如jquery。
2.
function Test() {
// 这里可以看成是构造函数所以肯定是执行的}
3.完全没有问题
4.不可行。首先javascript为了避免变量冲突,每个js文件都应该在外面套一层
(function(){
//这里写代码,这个Index在其他的js文件中将不能引用。
var index = 1; // 不用var,代表所有文件中都可以引用。所以,一般做法是将类不用var,暴露在外面。不想暴露的用var限制
Test = function() {};})();
其次,javascript中间没有命名空间这个功能,但是可以模拟实现
(function(){
net = {};net.Test = function() {};})();// 其他js文件或者html中
var obj = new net.Test();
var XX = {}; //XX为命名空间名称
XX.fun = function(){ //你的函数名
alert("x");
};
XX.fun(); //调用
第一,js可以定义匿名函数,
第二,function关键字定义的东西可以,也只有其才可以new出新的object。
你的代码实际上是定义了一个匿名函数,而后用这个函数new出一个新的object。目前的js没有namespace的概念,所以,目前namespace在js里,实际上是用object包裹一遍来实现的,比如
var Douban={}; //Douban实际起到了类似于namespace的作用
Douban.func=function(){};
var obj={};
obj.prop1=1;
obj.func1=function(){};