最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中的prototype使用說明

 更新時間:2010年04月13日 22:00:58   作者:  
在JavaScript中并沒有類的概念,但JavaScript中的確可以實現(xiàn)重載,多態(tài),繼承。這些實現(xiàn)其實方法都可以用JavaScript中的引用和變量作用域結合prototype來解釋。
1、prototype
在JavaScript中并沒有類的概念,但JavaScript中的確可以實現(xiàn)重載,多態(tài),繼承。這些實現(xiàn)其實方法都可以用JavaScript中的引用和變量作用域結合prototype來解釋。

2、簡單的例子
復制代碼 代碼如下:

var Blog = function( name, url ){
this.name = name;
this.url = url;
};
Blog.prototype.jumpurl = '';
Blog.prototype.jump = function(){
window.location = this.jumpurl;
};
/*
*等同于
Blog.prototype = {
jumpurl : '',
jump : function(){
window.location = this.jumpurl;
}
};
*/
var rainman = new Blog('jb51', 'http://www.fzitv.net');
var test = new Blog('server', 'http://s.jb51.net');

這是一個非常簡單的例子,但卻可以很好的解釋prototype內在的一些東西,先看下圖的內存分配:

通過上圖可以看到下面這些內容:

prototype只是函數(shù)的一個屬性,該屬性的類型是一個對象。
內存分配狀況:
函數(shù)Blog擁有一個prototype屬性,而prototype屬性擁有一個變量和一個函數(shù);
test和rainman兩個變量都分別有name和url兩個變量;
test和rainman兩個變量都有一個jumpUrl變量和一個jump函數(shù),但是并沒有分配內存,它們是對Blog.protype中的引用

3、擴展1:
復制代碼 代碼如下:

Website.prototype = Blog.prototype
var Blog = function( name, url ){
this.name = name;
this.url = blogurl;
};
Blog.prototype.jumpurl = '';
Blog.prototype.jump = function(){
window.location = this.jumpurl;
};
var rainman = new Blog('jb51', 'http://www.fzitv.net');
var test = new Blog('server', 'http://s.jb51.net');

var Website = function(){};
Website.prototype = Blog.prototype;
var mysite = new Website();


通過上圖可以看到下面這些內容:

"Website.prototype = Blog.prototype;":Website的prototype并沒有分配內存,只是引用了Blog的prototype屬性。
mysite的兩個屬性也沒有分配內存,也只是分別引用了Blog.prototype.jumpurl和Blog.prototype.jump


4、擴展2:
復制代碼 代碼如下:

Website.prototype = new Blog()
var Blog = function(){};
Blog.prototype.jumpurl = '';
Blog.prototype.jump = function(){
window.location = this.jumpurl;
};

var Website = function(){};
Website.prototype = new Blog();
var mysite = new Website();


通過上圖可以看到下面這些內容:

Website的prototype屬性,只是Blog的一個實例( 同rainman=new Blog(); );因此Website的prototype屬性就具有了jumpurl變量和jump方法了。
mysite是Website的一個實例,它的jumpurl和jump方法是繼承自Website的prototype,而Web.prototype繼承自Blog.prototype(這里與其說是繼承,不如說是引用)
整段程序在運行的過程中,內存中只分配了一個jumpurl變量和一個jump方法
5、new運算符
JavaScript中new運算符。
JavaScript中new運算符是創(chuàng)建一個新對象。使用方法:
new constructor[(arguments)]
其中constructor是必選項。對象的構造函數(shù)。如果構造函數(shù)沒有參數(shù),則可以省略圓括號。
arguments是可選項。任意傳遞給新對象構造函數(shù)的參數(shù)。

JavaScript中new運算符說明
new 運算符執(zhí)行下面的任務:
創(chuàng)建一個沒有成員的對象。
為那個對象調用構造函數(shù),傳遞一個指針給新創(chuàng)建的對象作為 this 指針。
然后構造函數(shù)根據(jù)傳遞給它的參數(shù)初始化該對象。
示例
下面這些是有效的 new 運算符的用法例子。
my_object = new Object;
my_array = new Array();
my_date = new Date("Jan 5 1996");

6、其它
在絕大多數(shù)JavaScript版本中,JS引擎都會給每個函數(shù)一個空的原型對象,即prototype屬性。

相關文章

最新評論

西平县| 民和| 山阴县| 方城县| 青阳县| 贺兰县| 普宁市| 闽侯县| 夹江县| 抚松县| 德江县| 福海县| 黎城县| 乌拉特中旗| 霍山县| 甘洛县| 隆昌县| 高州市| 彭山县| 云梦县| 平原县| 唐山市| 平罗县| 鲁山县| 林西县| 若羌县| 阿拉善左旗| 宜兰市| 大庆市| 仲巴县| 南乐县| 汝州市| 准格尔旗| 桓台县| 行唐县| 江门市| 澜沧| 德昌县| 讷河市| 京山县| 利川市|