成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript面向?qū)ο?~ 原型和繼承(2)

boredream / 2418人閱讀

摘要:如前面提到,實(shí)例對(duì)象通過(guò)訪問(wèn)原型。那么,原型鏈?zhǔn)裁磿r(shí)候到頭呢默認(rèn)的原型鏈結(jié)構(gòu)又是怎樣的呢凡是使用構(gòu)造函數(shù),并且沒(méi)有利用賦值方法修改原型的對(duì)象,則保留默認(rèn)的原型鏈,該原型鏈通過(guò)一直向上訪問(wèn)必須最終到頭,返回值。原型也是一個(gè)對(duì)象,繼承自。

原型鏈 什么是原型鏈

根據(jù)之前關(guān)于原型的知識(shí)(https://segmentfault.com/a/11...),漸漸引出了原型鏈的概念。凡是對(duì)象都有原型,而在JavaScript中,萬(wàn)物皆對(duì)象,所以,原型也是對(duì)象,也具有原型,也就是原型的原型,如此下去,會(huì)構(gòu)成一個(gè)對(duì)象序列,該結(jié)構(gòu)即為原型鏈。如前面提到,實(shí)例對(duì)象通過(guò) proto 訪問(wèn)原型。

那么,原型鏈?zhǔn)裁磿r(shí)候到頭呢?默認(rèn)的原型鏈結(jié)構(gòu)又是怎樣的呢?

凡是使用構(gòu)造函數(shù),并且沒(méi)有利用賦值方法修改原型的對(duì)象,則保留默認(rèn)的原型鏈,該原型鏈通過(guò) proto 一直向上訪問(wèn)必須最終到頭,返回值 null。注意,這里說(shuō)的是原型的值為null,需要與之前的屬性查找原則所說(shuō)的沒(méi)有該屬性返回的是undefined區(qū)分開來(lái)。

以一個(gè)簡(jiǎn)單的構(gòu)造函數(shù)為例,演示默認(rèn)的原型鏈結(jié)構(gòu):

function Person(){}
var p = new Person();

當(dāng)前實(shí)例對(duì)象 -> Person.prototype -> Object.prototype -> nll
可以在Google瀏覽器調(diào)試工具中查看
什么是原型式繼承

通過(guò)修改(增加、刪除等)原型鏈結(jié)構(gòu),使得實(shí)例對(duì)象具有原型鏈上的所有方法

函數(shù)的原型鏈

上面講的是對(duì)象的原型鏈,那函數(shù)的原型鏈呢?

1、函數(shù)的構(gòu)造函數(shù)

在js中,使用Function可以實(shí)例化函數(shù)對(duì)象,也就是說(shuō)在js中,函數(shù)與普通對(duì)象一樣,也是一個(gè)對(duì)象類型,所以函數(shù)可以

使用對(duì)象的動(dòng)態(tài)特性

用構(gòu)造函數(shù)創(chuàng)建函數(shù)

創(chuàng)建其他對(duì)象

唯一可以限定變量作用域的結(jié)果

2、Function的實(shí)例代碼

var foo = new Function("參數(shù)一", "參數(shù)二", "...");
Function的參數(shù)全是字符串,它是將參數(shù)連接起來(lái)的函數(shù)
沒(méi)有參數(shù),表示空函數(shù);
只有一個(gè)參數(shù),表示函數(shù)體;
有N個(gè)參數(shù),最后一個(gè)表示函數(shù)體,前面所有的都表示函數(shù)體的參數(shù);

綜上,new Function 在功能上與普通函數(shù)并無(wú)二意。從下面的代碼,也可以看出。

function foo(a, b){
  var sum = a + b;
  return sum;
}

var foo = new Function("a", "b", "var sum = a + b; return sum;");

3、函數(shù)的原型鏈
任何函數(shù)都是Function的實(shí)例,所以函數(shù)可以通過(guò)__proto__訪問(wèn)到其原型(Function.prototype)。原型也是一個(gè)對(duì)象,繼承自O(shè)bject.prototype。當(dāng)前的原型鏈結(jié)構(gòu)為:
fn -> Function.prototype -> Object.prototype -> null

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/100105.html

相關(guān)文章

  • 面向對(duì)象JavaScript

    摘要:是完全的面向?qū)ο笳Z(yǔ)言,它們通過(guò)類的形式組織函數(shù)和變量,使之不能脫離對(duì)象存在。而在基于原型的面向?qū)ο蠓绞街?,?duì)象則是依靠構(gòu)造器利用原型構(gòu)造出來(lái)的。 JavaScript 函數(shù)式腳本語(yǔ)言特性以及其看似隨意的編寫風(fēng)格,導(dǎo)致長(zhǎng)期以來(lái)人們對(duì)這一門語(yǔ)言的誤解,即認(rèn)為 JavaScript 不是一門面向?qū)ο蟮恼Z(yǔ)言,或者只是部分具備一些面向?qū)ο蟮奶卣?。本文將回歸面向?qū)ο蟊疽猓瑥膶?duì)語(yǔ)言感悟的角度闡述為什...

    novo 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對(duì)象”還好嗎?

    摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過(guò)對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來(lái)。注意中,對(duì)象一定是通過(guò)類的實(shí)例化來(lái)的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    李昌杰 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對(duì)象”還好嗎?

    摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過(guò)對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來(lái)。注意中,對(duì)象一定是通過(guò)類的實(shí)例化來(lái)的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    Lyux 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.32 - 七夕將至,你的“對(duì)象”還好嗎?

    摘要:很多情況下,通常一個(gè)人類,即創(chuàng)建了一個(gè)具體的對(duì)象。對(duì)象就是數(shù)據(jù),對(duì)象本身不包含方法。類是相似對(duì)象的描述,稱為類的定義,是該類對(duì)象的藍(lán)圖或原型。在中,對(duì)象通過(guò)對(duì)類的實(shí)體化形成的對(duì)象。一類的對(duì)象抽取出來(lái)。注意中,對(duì)象一定是通過(guò)類的實(shí)例化來(lái)的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...

    AaronYuan 評(píng)論0 收藏0
  • 重新認(rèn)識(shí)JavaScript面向對(duì)象: 從ES5到ES6

    摘要:基于原型的面向?qū)ο笤诨谠偷恼Z(yǔ)言中如并不存在這種區(qū)別它只有對(duì)象不論是構(gòu)造函數(shù),實(shí)例,原型本身都是對(duì)象。允許動(dòng)態(tài)地向單個(gè)的對(duì)象或者整個(gè)對(duì)象集中添加或移除屬性。為了解決以上兩個(gè)問(wèn)題,提供了構(gòu)造函數(shù)創(chuàng)建對(duì)象的方式。 showImg(https://segmentfault.com/img/remote/1460000013229218); 一. 重新認(rèn)識(shí)面向?qū)ο?1. JavaScript...

    VishKozus 評(píng)論0 收藏0
  • 重新認(rèn)識(shí)JavaScript面向對(duì)象: 從ES5到ES6

    摘要:基于原型的面向?qū)ο笤诨谠偷恼Z(yǔ)言中如并不存在這種區(qū)別它只有對(duì)象不論是構(gòu)造函數(shù),實(shí)例,原型本身都是對(duì)象。允許動(dòng)態(tài)地向單個(gè)的對(duì)象或者整個(gè)對(duì)象集中添加或移除屬性。為了解決以上兩個(gè)問(wèn)題,提供了構(gòu)造函數(shù)創(chuàng)建對(duì)象的方式。 showImg(https://segmentfault.com/img/remote/1460000013229218); 一. 重新認(rèn)識(shí)面向?qū)ο?1. JavaScript...

    用戶83 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

boredream

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<