2008-03-12
JS 构造器的研究
自从写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;
})();
大家研究下哈哈
发表评论
最近加入圈子
最新评论
-
国人的技术和老外的差距
老外写书讲有理有据,分析、推理过程详尽。 国人善总结,重结论,其中道理自己慢慢悟 ...
-- by Godlikeme -
国人的技术和老外的差距
可能是大家这样认为的` 也可能我接触的面太小` 搞了2年的程序学过无数的技术 看 ...
-- by xxpniu -
国人的技术和老外的差距
国外1%的成功新技术背后是99%失败新技术.中国有那么多剩余劳动力么?
-- by 抛出异常的爱 -
国人的技术和老外的差距
国内的技术和国外没那么大差距,主要在管理上。放心吧,用不到20年,3~5年肯定赶 ...
-- by Godlikeme -
说说JS
是的,难得对JS深入的分析,令人信服....不禁赞同不已
-- by sp42







评论排行榜