JScript中的prototype(原型)屬性研究第1/2頁(yè)
更新時(shí)間:2010年04月09日 14:20:09 作者:
我們知道JScript中對(duì)象的prototype屬性,是用來(lái)返回對(duì)象類(lèi)型原型的引用的。
我們使用prototype屬性提供對(duì)象的類(lèi)的一組基本功能。并且對(duì)象的新實(shí)例會(huì)"繼承"賦予該對(duì)象原型的操作。但是這個(gè)prototype到底是怎么實(shí)現(xiàn)和被管理的呢?
對(duì)于對(duì)象的prototype屬性的說(shuō)明,JScript手冊(cè)上如是說(shuō):所有 JScript 內(nèi)部對(duì)象都有只讀的 prototype 屬性??梢韵蚱湓椭袆?dòng)態(tài)添加功能(屬性和方法),但該對(duì)象不能被賦予不同的原型。然而,用戶(hù)定義的對(duì)象可以被賦給新的原型。
下面我們看三個(gè)經(jīng)典的prototype屬性的使用示例。
1、為腳本環(huán)境內(nèi)建對(duì)象添加方法:
Array.prototype.max = function()
{
var i, max = this[0];
for (i = 1; i < this.length; i++)
{
if (max < this[i])
max = this[i];
}
return max;
};
2、為用戶(hù)自定義類(lèi)添加方法:
function TestObject(name)
{
this.m_Name = name;
}
TestObject.prototype.ShowName = function()
{
alert(this.m_Name);
};
3、更新自定義類(lèi)的prototype:
function TestObjectA()
{
this.MethodA = function()
{
alert('TestObjectA.MethodA()');
}
}
function TestObjectB()
{
this.MethodB = function()
{
alert('TestObjectB.MethodB()');
}
}
TestObjectB.prototype = new TestObjectA();
第三個(gè)很眼熟吧?對(duì)啊,它就是我們前面介紹的原型繼承法呀~~ 不過(guò)今天我們不是研究"繼承",之所以可以這樣來(lái)實(shí)現(xiàn)一種繼承,只是利用了prototype屬性的一個(gè)副作用而已。
prototype還有一個(gè)默認(rèn)的屬性:constructor,是用來(lái)表示創(chuàng)建對(duì)象的函數(shù)的(即我們OOP里說(shuō)的構(gòu)造函數(shù))。constructor屬性是所有具有prototype屬性的對(duì)象的成員。它們包括除Global和Math對(duì)象以外的所有JScript內(nèi)部對(duì)象。constructor屬性保存了對(duì)構(gòu)造特定對(duì)象實(shí)例的函數(shù)的引用。
弄清楚了JScript中prototype屬性怎么使用后,下面我們?cè)賮?lái)深入的研究它。
對(duì)于對(duì)象的prototype屬性的說(shuō)明,JScript手冊(cè)上如是說(shuō):所有 JScript 內(nèi)部對(duì)象都有只讀的 prototype 屬性??梢韵蚱湓椭袆?dòng)態(tài)添加功能(屬性和方法),但該對(duì)象不能被賦予不同的原型。然而,用戶(hù)定義的對(duì)象可以被賦給新的原型。
下面我們看三個(gè)經(jīng)典的prototype屬性的使用示例。
1、為腳本環(huán)境內(nèi)建對(duì)象添加方法:
復(fù)制代碼 代碼如下:
Array.prototype.max = function()
{
var i, max = this[0];
for (i = 1; i < this.length; i++)
{
if (max < this[i])
max = this[i];
}
return max;
};
2、為用戶(hù)自定義類(lèi)添加方法:
復(fù)制代碼 代碼如下:
function TestObject(name)
{
this.m_Name = name;
}
TestObject.prototype.ShowName = function()
{
alert(this.m_Name);
};
3、更新自定義類(lèi)的prototype:
復(fù)制代碼 代碼如下:
function TestObjectA()
{
this.MethodA = function()
{
alert('TestObjectA.MethodA()');
}
}
function TestObjectB()
{
this.MethodB = function()
{
alert('TestObjectB.MethodB()');
}
}
TestObjectB.prototype = new TestObjectA();
第三個(gè)很眼熟吧?對(duì)啊,它就是我們前面介紹的原型繼承法呀~~ 不過(guò)今天我們不是研究"繼承",之所以可以這樣來(lái)實(shí)現(xiàn)一種繼承,只是利用了prototype屬性的一個(gè)副作用而已。
prototype還有一個(gè)默認(rèn)的屬性:constructor,是用來(lái)表示創(chuàng)建對(duì)象的函數(shù)的(即我們OOP里說(shuō)的構(gòu)造函數(shù))。constructor屬性是所有具有prototype屬性的對(duì)象的成員。它們包括除Global和Math對(duì)象以外的所有JScript內(nèi)部對(duì)象。constructor屬性保存了對(duì)構(gòu)造特定對(duì)象實(shí)例的函數(shù)的引用。
弄清楚了JScript中prototype屬性怎么使用后,下面我們?cè)賮?lái)深入的研究它。
相關(guān)文章
JS 使用 window對(duì)象的print方法實(shí)現(xiàn)分頁(yè)打印功能
這篇文章主要介紹了JS 使用 window對(duì)象的print方法實(shí)現(xiàn)分頁(yè)打印功能,這種方法兼容性比較好,在ie和火狐瀏覽器下都可以正常使用,感興趣的朋友跟隨腳本之家小編一起看看吧2018-05-05Javascript使用post方法提交數(shù)據(jù)實(shí)例
這篇文章主要介紹了Javascript使用post方法提交數(shù)據(jù),實(shí)例分析了javascript實(shí)現(xiàn)post提交數(shù)據(jù)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08JS中Select下拉列表類(lèi)(支持輸入模糊查詢(xún))功能
這篇文章主要介紹了JS中Select下拉列表類(lèi)(支持輸入模糊查詢(xún))功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-01-01JS實(shí)現(xiàn)集合的交集、補(bǔ)集、差集、去重運(yùn)算示例【ES5與ES6寫(xiě)法】
這篇文章主要介紹了JS實(shí)現(xiàn)集合的交集、補(bǔ)集、差集、去重運(yùn)算,結(jié)合實(shí)例形式分析了ES5與ES6語(yǔ)法環(huán)境下的集合常見(jiàn)運(yùn)算操作技巧,需要的朋友可以參考下2019-02-02微信小程序?qū)崿F(xiàn)加入購(gòu)物車(chē)滑動(dòng)軌跡
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)加入購(gòu)物車(chē)滑動(dòng)軌跡,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11javascript對(duì)象的property和prototype是這樣一種關(guān)系
javascript對(duì)象的property和prototype是這樣一種關(guān)系...2007-03-03