在JavaScript語(yǔ)言中,通常使用Prototype來(lái)實(shí)現(xiàn)OO。在這里,我們不對(duì)JavaScript的OO實(shí)現(xiàn)進(jìn)行過(guò)多的探討,著重來(lái)看一下JS中對(duì)象的 " /> 国产精品1234区,日韩中文字幕免费观看,国产女人在线视频

四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

javascript prototype,executing,context,closure

要學(xué)好JavaScript,有幾個(gè)基本概念必須搞清楚:prototype,executing,context,closure。
Prototype

JavaScript語(yǔ)言中,通常使用Prototype來(lái)實(shí)現(xiàn)OO。在這里,我們不對(duì)JavaScript的OO實(shí)現(xiàn)進(jìn)行過(guò)多的探討,著重來(lái)看一下JS中對(duì)象的內(nèi)存模型。在開(kāi)始之前,需要先明確以下幾點(diǎn):
1. JS中,存在以下幾種數(shù)據(jù)類型:string,number,boolean,object,function(注意:首字母均為小寫)。
2 “Object”, “String”, “Date”等內(nèi)置數(shù)據(jù)類型,在JS中實(shí)際上是函數(shù)名稱(使用"alert(typeof Object)"可以驗(yàn)證,輸出為"function")。我們通常指的類型為"Date"的數(shù)據(jù)類型,實(shí)際上是通過(guò)"new Date"所產(chǎn)生的對(duì)象。
3. 在JavaScript中,對(duì)象都是associative array (hash table),可以動(dòng)態(tài)指定對(duì)象的property。
4. 在Firefox中可以使用"__proto__"屬性來(lái)查看一個(gè)對(duì)象的"prototype"。

下面我們來(lái)看一個(gè)簡(jiǎn)單的例子:

function Person() { this.age = 10; this.name = "test";}Person.prototype = new Object;var p = new Person;alert(p); // output "[object Object]"alert(p.__proto__); // output "[object Object]"

可以看出Person數(shù)據(jù)類型具有一個(gè)“prototype”,如果更改這個(gè)prototype,會(huì)影響到所有已經(jīng)產(chǎn)生的Person類型的對(duì)象,同時(shí)也會(huì)影響到以后建立的Person類型的對(duì)象。如果指定一個(gè)function的prototype屬性,則所有使用該function生成的對(duì)象實(shí)例中(使用new操作符)都具有該prototype,在Firefox 中,可以使用"__proto__"屬性訪問(wèn)。

通常情況下,我們講JS中的對(duì)象都繼承Object數(shù)據(jù)類型,這是如何體現(xiàn)的呢?我們把以上的程序稍微修改一下:

function Person() { this.age = 10; this.name = "test";}var p = new Person;alert(p); // output "[object Object]"alert(p.__proto__); // output "[object Object]"alert(p.__proto__.__proto__); // output "[object Object]"alert(p.__proto__.__proto__ == Object.prototype); // output "true"alert(p.__proto__.__proto__.__proto__); // output "null"

由以上程序可以看到,Person的"prototype"(在這里,沒(méi)有明確指定Person.prototype, 而是使用缺省值)的"prototype" (p.__proto__.__proto__)正是Object.prototype, Object.prototype是prototype chain的終點(diǎn)(其自己的祖先為null)。

在JS中,Object是function,同時(shí),所有function的實(shí)例,也都是Object。請(qǐng)看如下程序:

/* Object, Function都是function數(shù)據(jù)類型 */alert(typeof Object); // output "function"alert(typeof Function); // output "function"/* Function的prototype是一個(gè)空f(shuō)unction */alert(Function.prototype); // output "function() {}"alert(Function.__proto__ == Function.prototype); // output "true"/* function是object, 其prototype chain的終點(diǎn)是Object.prototype */alert(Function.__proto__.__proto__ == Object.prototype); //output "true"/* Object是function的實(shí)例 */ alert(Object.__proto__ == Function.prototype); // output "true"alert(Object.__proto__.__proto__ == Object.prototype); // output "true"改變Function.prototype會(huì)影響到“Object”,改變Object.prototype會(huì)影響到所有function的實(shí)例。

JavaScript技術(shù)javascript prototype,executing,context,closure,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 公共基础知识1000题及答案| 历史试卷反思| 爱情电影片| 黄网站在线观看视频| 唐砖演员表| 6套电影频道节目表| 哥哥女人| 贾樟柯对毕赣的评价| 九龙城寨在线观看| 现代古诗冰心| 一个国家的诞生| 菊花开| 电影1921| 电影《在云端》| 性的张力短片集| 可隆衣服属于什么档次| 大尺度激情床戏视频| 少女戏春潮| 儿子娶妈妈剧情介绍| 天堂真的存在| 《高校教师》日本电影| 不速之客美国恐怖电影2014| mariaarredondo| 4人免费剧本及答案| 爱播| a面b面| 有档期是有空还是没空| 林采薇| 帕米尔我的家乡多么美简谱| 古天乐电影全部作品最新| 苏捷斯卡战役 电影| 七上语文背诵清单表| 职业兽医医生资格证报名官网| 辩论稿| 料音| 松永| 追凶电影| 雳剑 电视剧演员表| 美丽的草原我的家二胡独奏| 免费看黄在线看| 陈颖芝三级|