中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是js的prototype

發布時間:2020-07-13 10:13:13 來源:億速云 閱讀:118 作者:Leah 欄目:web開發

這篇文章將為大家詳細講解有關什么是js的prototype,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

Javascript也是面向對象的語言,但它是一種基于原型Prototype的語言,而不是基于類的語言。

在javaScript創建對象一文中提到過:用構造函數創建對象存在一個問題即同一構造函數的不同實例的相同方法是不一樣的,所以我們用原型把構造函數中公共的屬性和方法提取出來進行封裝,達到讓所有實例共享的目的。

function定義的對象有一個prototype屬性,prototype屬性又指向了一個prototype對象。在prototype對象中有一個constructor屬性,這個constructor屬性同樣指向一個constructor對象,而這個constructor對象恰恰就是這個function函數本身。

用偽代碼表示如下:

var function{
    prototype:prototype{
        constructor:constructor == function
    }
}

函數與原型的關系

js中創建一個函數,就會自動創建一個prototype屬性,這個屬性指向函數的原型對象,并且原型對象會自動獲得一個constructor(構造函數)屬性,指向該函數。

舉例:以前面的原型模式創建對象為例說明

<script type="text/javascript">
function Person(){

}
Person.prototype.name="lxy";
Person.prototype.age=22;
Person.prototype.job="Software Engineer";
Person.prototype.sayName=function(){
    alert(this.name);
}
     
     var lxy=new Person();
     lxy.sayName();
     var personA=new Person();
     personA.sayName();
     alert(lxy.sayName()==personA.sayName());//true
</script>

實例與原型的關系

通過構造函數創建一個實例,該實例內部將包含一個屬性(指針),指向構造函數的原型對象。

舉例:Person構造函數的實例Person1和Person2的[[Prototype]]屬性都指向Person的原型。

Note:[[Prototype]]連接是存在于實例和構造函數的原型之間,而不是存在實例與構造函數之間。

關于這個指針,ECMA-262中叫[[Prototype]],沒有標準的方式訪問[[Prototype]],但Firefox、Safari和Chrome在每個對象上都支持一個屬性__protp__,而在其他實現中,這個屬性對腳本不可見。

關于什么是js的prototype就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

罗田县| 乌鲁木齐县| 平定县| 灵寿县| 定结县| 绩溪县| 台前县| 那曲县| 广平县| 大连市| 偃师市| 白城市| 商河县| 南宫市| 千阳县| 永春县| 高邑县| 东莞市| 鄂托克旗| 嘉义县| 龙海市| 泽库县| 桓台县| 信宜市| 武安市| 扬中市| 金乡县| 铜陵市| 当涂县| 武夷山市| 河北区| 奉化市| 新乐市| 甘孜县| 奎屯市| 威宁| 建阳市| 苏尼特左旗| 日土县| 阿图什市| 延庆县|