青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

對javascript面向?qū)ο蠹夹g(shù)的理解(轉(zhuǎn))

1.javascript是面向?qū)ο蟮慕忉屝驼Z言,它在解釋之前會進行語法分析,如果有語法錯誤,立即停止;然后再逐行執(zhí)行,應該是語法制導解釋執(zhí)行吧.所有的變量都是指針,變量指向?qū)ο?/div>
2.系統(tǒng)中內(nèi)置object,function,number,string,boolean等類型
typeof({})//object
typeof(Object)//function
typeof(1)//number
typeof('1')//string
typeof(true)//boolean
typeof(null)//object,<<<<<
3.系統(tǒng)內(nèi)置Object,Function,Number,String,Boolean等function對象
typeof(Object)//function
typeof(Function)//function
typeof(Number)//function
4.Object
a={}
a=Object()
a=new Object()
上面的語句等價
typeof(a)//object
5.Function
function f(){}
f=function(){}
f=Function()
f=new Function()
上面的語句等價
typeof(f)//function,注意new Function返回function對象,比較特別
6.Number,String,Boolean
a=Number(1)//typeof(a)==number
a=new Number(1)//typeof(a)==object<<<<<<<<
類推
7.function對象都有prototype屬性和constructor屬性
typeof(Object.prototype)//object
typeof(Function.prototype)//function<<<<<<<<
typeof(Number.prototype)//object
function f(){}
typeof(f.prototype)//object
8.object對象只有constructor屬性而沒有prototype屬性(null什么都沒有)
a={}
typeof(a.constructor)//function
typeof(a.prototype)//undefined
9.任何對象都可以增加,修改和刪除屬性,但內(nèi)置屬性有例外
a={}
a.x=1;
a.x=2;
delete(a.x)
delete(a)
typeof(a)//undefined
delete(Object.prototype)
typeof(Object.prototype)//object
object.prototype=undefined;
typeof(Object.prototype)//object,<<<<<<<不可刪
typeof(Object.constructor)//function
Object.constructor=undefined;
typeof(Object.constructor)//undefined,可改,可刪
typeof(Object.prototype)//object
delete(Object)
typeof(Object)//undefined<<<<<<<<<<,可以刪除
a={};
typeof(a)//object,仍然是object對象
因此可以認為只有Object.prototype才代表object類型,F(xiàn)unction.prototype才代表function類,等等.后面還有細述
10.在javascript中的賦值操作都是引用操作(對對象的引用)
所謂的引用就是每個對象都維持一個引用計數(shù)器,變量創(chuàng)建時引用計數(shù)為0.變量都是指針.當改對象被賦值給某變量時,增加對象的引用計數(shù),變量指向該對象.當刪除該變量或改變變量的值時,減少原對象的引用.如果對象的引用為0,由垃圾收集器(gc)定時收集.
a={}//創(chuàng)建空對象,然后a對其引用
a.x=1;//創(chuàng)建對象Number(1),然后a.x對其引用
b=a;//b對a對象引用,即都指向前面的空對象
b.x=2;
alert(a.x)//=2,前面的Number(1)對象被解除引用
定義函數(shù)備用
function show(msg,obj)
{
document.writeln(msg);
for(var p in obj)
   document.writeln(p+'->'+obj[p]+',');
document.writeln('<br>');
}
11.研究Object這個function對象
show('Object:',Object);//Object:
show('Object.prototype:',Object.prototype);//Object.prototype:
Object.x=1;
show('Object:',Object);//Object: x->1,
show('Object.prototype:',Object.prototype);//Object.prototype:
//在Object的增加屬性不影響Object.prototype
Object.prototype.y=1;
show('Object:',Object);//Object: y->1, x->1,
show('Object.prototype:',Object.prototype);//Object.prototype: y->1,
//在Object.prototype中增加屬性影響Object
Object.prototype.y=2;
show('Object:',Object);//Object: y->2, x->1,
show('Object.prototype:',Object.prototype);//Object.prototype: y->2,
//對Object.prototype的屬性修改影響Object
Object.y=2;
show('Object:',Object);//Object: y->2, x->1,
show('Object.prototype:',Object.prototype);//Object.prototype: y->1,
//對Object中屬性的修改不影響Object.prototype
delete(Object.y);
show('Object:',Object);//Object: x->1,
show('Object.prototype:',Object.prototype);//Object.prototype: y->1,
//刪除Object的屬性不影響Object.prototype
Object.prototype.y=2;
show('Object:',Object);//Object: x->1,
show('Object.prototype:',Object.prototype);//Object.prototype: y->2,
//Object的屬性沒有改變
Object.prototype.z=2;
show('Object:',Object);//Object: z->2, y->2, x->1,
show('Object.prototype:',Object.prototype);//Object.prototype: y->2, z->2,
//可見在Object.prototype中增加了一個z屬性,Object被同步
delete(Object.prototype.z);
show('Object:',Object);//Object: y->2, x->1,
show('Object.prototype:',Object.prototype);//Object.prototype: y->2,
//屬性同時被刪除
Object.y=2;
delete(Object.prototype.y);//Object: y->2, x->1,
show('Object:',Object);
show('Object.prototype:',Object.prototype);//Object.prototype:
我的理解是:
Object是function對象,它繼承自object類型.它有自己的屬性,同時也從Object.prototype(前面說過它才是object的代表)繼承屬性.
每個屬性都有一個是否被修改標志.
.在Object.prototype中增加一個屬性,會導致Object的屬性被同步
如果該對象沒有該屬性,復制一份,指向同一個值,置未修改標志;如果該對象有該屬性,不執(zhí)行任何操作
.修改Object.prototype中任何一個屬性,自然會導致Object的未修改繼承屬性同時改變
.刪除Object.prototype中任何一個屬性,會導致Object的未修改繼承屬性被同步刪除
.對Object的自身的屬性的增加,修改,刪除自然不會影響到Object.prototype,增加和修改會置修改標志
一句話,Object.prototype的級別比Object高
11.研究Function和Object之間的關系
show('Object:',Object);//Object:
show('Object.prototype:',Object.prototype);//Object.prototype:
show('Function:',Function);//Function:
show('Function.prototype:',Function.prototype);//Function.prototype:
Object.prototype.x=1;
show('Object:',Object);//Object: x->1,
show('Object.prototype:',Object.prototype);//Object.prototype: x->1,
show('Function:',Function);//Function: x->1,
show('Function.prototype:',Function.prototype);//Function.prototype: x->1,
//Object,Function,Function.prototype都有了屬性x
Function.prototype.y=1;
show('Object:',Object);//Object: y->1, x->1,
show('Object.prototype:',Object.prototype);//Object.prototype: x->1,
show('Function:',Function);//Function: y->1, x->1,
show('Function.prototype:',Function.prototype);//Function.prototype: x->1, y->1
//Object,Function都有了屬性y,而Object.prototype不受影響,
//可見Object.prototype比Function.prototype級別高
//Object,Function都是function類型(由Function.prototype代表)的對象
//這里的屬性也有類似上面的同步現(xiàn)象
alert(Object);//function Object(){[native code]}
alert(Object.prototype);//object
alert(Object.prototype.prototype);//undefined,object無prototype屬性
alert(Object.prototype.constructor);//function Object(){[native code]},由Object構(gòu)造
alert(Object.constructor);//function Function(){[native code]}
alert(Function);//function Function(){[native code]}
alert(Function.prototype);//function prototype(){[native code]} <<<<<<<<<<<
alert(Function.prototype.prototype);//undefined<<<<<<<<<<,這個function無prototype屬性
alert(Function.prototype.constructor);//function Function(){[native code]}由Function構(gòu)造
alert(Function.constructor);//function Function(){[native code]},自己構(gòu)造自己
//可以看到這里面有遞歸引用關系
O.P
| \
|  F.P
 \ / \
  O   F
Function.prototype.f=function(){};Function.f.f.f.f.f....一直下去的引用都有效
具體的操作過程為,根據(jù)object和function創(chuàng)建一個function對象,然后把它賦值給Function.prototype,
然后同步所有function對象(Function.prototype已經(jīng)被更新,排除),導致在該function對象中增加一個f屬性,指向自己.
可以如下解釋object和function之間的關系
每個對象都是object的實例,每個函數(shù)對象又同時都是function的實例.通過Object.prototype可以引用到
object,通過Function.prototype可以引用到function.
12.new操作
Object.prototype.x=1;
Function.prototype.y=1;
function f(){alert(this.x);}
alert(f.constructor);//function Function(){[native code]}由Function構(gòu)造
alert(f.prototype.constructor);//function f(){},指向自己
f.prototype.z=1;
show('f:',f);//f: y->1, x->1, 既繼承object又繼承funciton
show('f.prototype:',f.prototype);//f.prototype: x->1, z->1, 繼承自object
a=new f();//alert(1)
show('a:',a);//a: z->1, x->1, 既繼承f.prototype,又繼承object
delete(f.prototype);//可刪
b=new f();
show('b:',b);//b: x->1,
alert(f.prototype);//undefined,被刪除
解釋:
new先創(chuàng)建一空對象,然后同步object和f.prototype中的屬性,接著讓this指針指向該對象,執(zhí)行函數(shù)f的代碼,最后返回該對象
a={};等價于a=new Object();object==Object.prototype,因此只使用一次object同步

posted on 2007-04-05 14:38 PeakGao 閱讀(463) 評論(0)  編輯 收藏 引用 所屬分類: Javascript

<2006年6月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

導航

統(tǒng)計

  • 隨筆 - 65
  • 文章 - 0
  • 評論 - 80
  • 引用 - 0

常用鏈接

留言簿(9)

隨筆分類(67)

隨筆檔案(65)

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              国产一区日韩欧美| 久久视频国产精品免费视频在线| 夜夜爽av福利精品导航 | 中文国产成人精品久久一| 亚洲精品小视频| 夜夜狂射影院欧美极品| 99视频+国产日韩欧美| 亚洲新中文字幕| 久久成人av少妇免费| 国产欧美日韩精品a在线观看| 99精品国产热久久91蜜凸| 日韩一级黄色av| 亚洲影院一区| 久久天天狠狠| 欧美日韩一区二区三区| 国产欧美精品在线观看| 1024欧美极品| 亚洲一区观看| 蜜桃av一区二区| 99这里只有精品| 久久精品国产一区二区电影| 欧美成人黑人xx视频免费观看| 国产精品成人一区二区三区吃奶 | 榴莲视频成人在线观看| 欧美国产在线观看| 国产欧美日韩91| 最新国产成人在线观看| 午夜视频一区| 欧美激情中文字幕一区二区| 一区二区高清在线观看| 免费av成人在线| 国产有码一区二区| 亚洲欧美日本国产有色| 亚洲高清三级视频| 欧美一区二区三区精品电影| 欧美日韩在线看| 亚洲精品麻豆| 欧美xart系列高清| 性感少妇一区| 国产精品久久久久77777| 亚洲精品影视在线观看| 久久综合网hezyo| 亚洲欧美一区二区激情| 国产精品theporn88| 亚洲精品一级| 欧美国产精品久久| 久久精品国产清自在天天线| 国产欧美一区二区白浆黑人| 亚洲免费视频网站| 日韩视频亚洲视频| 欧美激情一区二区久久久| 亚洲国产成人久久综合一区| 久久免费一区| 久久国产婷婷国产香蕉| 国产日韩欧美自拍| 久久成人免费电影| 午夜日韩在线观看| 国产亚洲精品aa| 久久久久久久久久久成人| 午夜精品久久久久久久99樱桃 | 久久久免费av| 午夜一区二区三区不卡视频| 国产精品一区二区久久国产| 黄色成人在线| 国产精品任我爽爆在线播放| 在线一区欧美| 亚洲精品美女91| 欧美日韩八区| 亚洲一区二区免费在线| 一区二区三区高清在线| 国产精品美女主播在线观看纯欲| 中文在线不卡视频| 宅男噜噜噜66一区二区66| 国产精品亚洲综合久久| 久久久精品国产免大香伊| 久久噜噜噜精品国产亚洲综合| 激情欧美一区二区| 模特精品裸拍一区| 欧美国产日韩视频| 亚洲一区二区三区四区中文| 亚洲香蕉伊综合在人在线视看| 国产欧美一区二区精品性| 久久久久久有精品国产| 另类欧美日韩国产在线| 一本色道久久加勒比88综合 | 久久久久久久一区二区三区| 尤物yw午夜国产精品视频| 亚洲福利视频网| 国产精品成人国产乱一区| 久久九九精品99国产精品| 欧美.www| 欧美一区综合| 欧美国产三级| 欧美亚洲自偷自偷| 免费欧美日韩国产三级电影| 亚洲一区二区三区四区五区午夜| 久久成人综合视频| 亚洲一区二区三区四区在线观看| 久久精品九九| 亚洲一区免费网站| 久久久久88色偷偷免费| 美腿丝袜亚洲色图| 欧美大片在线观看一区| 91久久精品日日躁夜夜躁欧美| 日韩午夜剧场| 精品91免费| 中文在线资源观看网站视频免费不卡| 国产日产欧美一区| 亚洲精品久久久久久久久久久久| 国产精品日韩欧美一区| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美伦理a级免费电影| 久久色在线播放| 国产精品久久久久久久浪潮网站 | 99视频一区二区| 99精品福利视频| 一区二区亚洲精品| 亚洲欧美日韩国产综合| 久久久一区二区三区| 欧美三级在线播放| 欧美福利视频在线| 国产亚洲人成网站在线观看 | 欧美一级视频一区二区| 亚洲一区视频在线| 欧美激情片在线观看| 久久婷婷激情| 国产偷国产偷亚洲高清97cao| 亚洲视频www| 亚洲一区二区在线免费观看| 欧美国产在线电影| 亚洲国产天堂网精品网站| ●精品国产综合乱码久久久久| 亚洲一区欧美二区| 亚洲伊人伊色伊影伊综合网| 国产一区自拍视频| 性8sex亚洲区入口| 一区二区三区不卡视频在线观看| 久久精品国产欧美亚洲人人爽| 亚洲综合视频1区| 欧美日韩免费网站| 日韩亚洲欧美成人一区| 一区二区三区精密机械公司| 欧美精品一区二区在线播放| 亚洲国产一区二区三区在线播 | 国产精品亚洲а∨天堂免在线| 夜夜嗨av色一区二区不卡| 亚洲毛片播放| 欧美激情精品久久久六区热门 | 欧美一进一出视频| 久久久综合香蕉尹人综合网| 狠狠久久亚洲欧美| 老司机精品福利视频| 欧美11—12娇小xxxx| 亚洲精品欧美日韩专区| 欧美电影在线观看完整版| 亚洲精品久久久久久下一站| 亚洲综合视频1区| 国产一区二区三区日韩| 欧美在线一区二区| 亚洲国产二区| 性欧美暴力猛交69hd| 精品成人国产| 欧美日韩国产高清视频| 中文一区二区| 欧美~级网站不卡| 亚洲专区欧美专区| 国产一区二区三区最好精华液| 久久久www| 亚洲日韩欧美一区二区在线| 亚洲无毛电影| 亚洲第一精品福利| 国产精品伦一区| 狂野欧美一区| 午夜一级在线看亚洲| 最新热久久免费视频| 亚洲激情电影在线| 欧美日韩国产美女| 亚洲欧洲日本在线| 国产精品久久久久国产精品日日| 性欧美暴力猛交另类hd| 亚洲国语精品自产拍在线观看| 亚洲欧美清纯在线制服| 亚洲福利电影| 国产精品区免费视频| 免费看成人av| 性视频1819p久久| 亚洲激情偷拍| 久久久久久有精品国产| 亚洲私拍自拍| 最新国产成人av网站网址麻豆 | 香蕉久久国产| 亚洲激情欧美激情| 久久亚洲国产成人| 亚洲欧美日韩专区| 亚洲精品乱码久久久久久黑人 | 欧美激情va永久在线播放| 欧美一区网站| 亚洲午夜未删减在线观看| 亚洲精选中文字幕| 亚洲国产专区校园欧美|