自从写JS开始一直在研究他与Java的共同点.
JAVA是模版复制的代码运行.
我们写的JAVA代码都是以类来封装,一个JAVA程序就是在不停从类模版中获取数据表示形式然后让进内存.
然而JAVASCRIPT却是直接解析语言,所有都是直接构建在代码之上.所以就没有所谓的模版之说了. 那怎么让我们的写的对象 复制成多个内存中位置不一样的命名空间呢? 这就需要构造器:(下面是ME研究了的心得);
构造器在JS中一个 Function 对象. 你当然可以使用函数的定义方法来创建
var _f=function(){}
也可以用对象的构造方法来创建了
var _f=new Function();
两个是一样的.
创建完后 我们的_f对象就有prototype属性了
prototype属性本身又是一个对象.
在JS中提供从function对象构造对象的接口 具体使用是这样的
var myOb= new _f();
在使用new 构造的时候 是把 _f 中的prototype所有的属性和方法复制进 构造出来的对象中.
所以我们可以这样
var _a = {id:'xxx'}
_f.prototype=_a;
然后在使用new
那么构造出来myOb 就有 id = 'xxx'这个属性了.
其实就是对象复制,我们可以这样来复制
var _a={id:'xxx'}
var a = (function(){
var _t={};
for(var p in _a){
_t[p]=_a[p];
}
return a;
})();
大家研究下哈哈
JAVA是模版复制的代码运行.
我们写的JAVA代码都是以类来封装,一个JAVA程序就是在不停从类模版中获取数据表示形式然后让进内存.
然而JAVASCRIPT却是直接解析语言,所有都是直接构建在代码之上.所以就没有所谓的模版之说了. 那怎么让我们的写的对象 复制成多个内存中位置不一样的命名空间呢? 这就需要构造器:(下面是ME研究了的心得);
构造器在JS中一个 Function 对象. 你当然可以使用函数的定义方法来创建
var _f=function(){}
也可以用对象的构造方法来创建了
var _f=new Function();
两个是一样的.
创建完后 我们的_f对象就有prototype属性了
prototype属性本身又是一个对象.
在JS中提供从function对象构造对象的接口 具体使用是这样的
var myOb= new _f();
在使用new 构造的时候 是把 _f 中的prototype所有的属性和方法复制进 构造出来的对象中.
所以我们可以这样
var _a = {id:'xxx'}
_f.prototype=_a;
然后在使用new
那么构造出来myOb 就有 id = 'xxx'这个属性了.
其实就是对象复制,我们可以这样来复制
var _a={id:'xxx'}
var a = (function(){
var _t={};
for(var p in _a){
_t[p]=_a[p];
}
return a;
})();
大家研究下哈哈