摘要:而原型就是類型對象的一個屬性。在中并沒有定義函數(shù)的原始類型,所以原型可以是任何類型。原型是用于保存對象的共享屬性和方法的,原型的屬性和方法并不會影響函數(shù)本身的屬性和放大。
原型 概述
在JavaScript中,函數(shù)是一個包含屬性和方法的Function類型的對象。而原型(Prototype)就是Function類型對象的一個屬性。
在函數(shù)定義時九包含了prototype屬性,他的初始值是一個空對象。在JavaScript中并沒有定義函數(shù)的原始類型,所以原型可以是任何類型。
原型是用于保存對象的共享屬性和方法的,原型的屬性和方法并不會影響函數(shù)本身的屬性和放大。
1.通過構造函數(shù)的prototype屬性
function fn(){ console.log("this is function"); } console.log(fn.prototype);
2.通過Object對象的getgetPrototypeOf()方法
function fn(){ console.log("this is function"); } console.log(Object.getPrototypeOf(fn));為原型新增屬性或方法
構造函數(shù).prototype.屬性名 = 屬性值
構造函數(shù).prototype.方法名 = function(){}
構造函數(shù).prototype = {
屬性名:屬性值,
方法:function(){}
}
構造函數(shù)的原型/*定義構造函數(shù)*/ function Fun(){ this.name = "segment"; this.sayMe = function(){ console.log("this is function"); } } //操作構造函數(shù)Fun的原型 Fun.prototype.age = 18; // 利用構造函數(shù)來創(chuàng)建對象 var fun = new Fun(); console.log(fun); // 為構造函數(shù)的原型新增的屬性 -> 構造函數(shù)創(chuàng)建的對象中依舊可以訪問 console.log(fun.age);// 18 // 對象fun中不存在age屬性 var result = Object.getOwnPropertyDescriptor(fun, "age"); console.log(result);自有屬性和原型屬性
自有屬性:構造函數(shù)本身的屬性
原型屬性:通過原型所定義的屬性
function Mingzi (name){ this .name = name; this .sayMe = function(){ console .log("this is function") } } Mingzi.prototype.age = 18; var mingzi = new Hero("石原"); console.log(mingzi.name);// 石原 console.log(mingzi.age);// 18 var mingzi2 = new Mingzi("長澤雅嗎"); console.log(mingzi2.name);// 長澤雅美 console.log(mingzi2.age);// 18 Hero.prototype.age = 80; console.log(mingzi.age); console.log(mingzi2.age);重寫屬性
通過構造函數(shù)或對象的自有屬性可以重寫原型的屬性
自有屬性與原型屬性同名時,默認訪問的是自有屬性
// 定義構造函數(shù) function Hero(){ this.name = "張無忌"; } // 構造函數(shù)的原型 Hero.prototype.name = "周芷若"; // 構造函數(shù)創(chuàng)建對象 var hero = new Hero(); console.log(hero.name);// 張無忌 // 刪除對象的屬性 delete hero.name; // 重新訪問對象的屬性 console.log(hero.name);// 周芷若檢測原型的屬性
Object.hasOwnProperty(prop)方法
作用 - 判斷當前指定屬性是否為自有屬性
參數(shù)1.prop - 表示指定屬性名稱
2.返回值 - 布爾值 true - 表示存在指定的自有屬性 false - 表示不存在指定的自有屬性
使用in關鍵字檢測對象的屬性
作用 - 判斷對象中是否存在指定屬性(自有屬性或原型屬性)
返回值 - 布爾值
true - 表示存在指定的屬性 false - 表示不存在指定的屬性顯示原型與隱式原型
每個函數(shù)function都有一個prototype,即顯式原型
每個實例對象都有一個__proto__,可稱為隱式原型
對象的隱式原型的值為其對應構造函數(shù)的顯式原型的值
函數(shù)的prototype屬性: 在定義函數(shù)時自動添加的, 默認值是一個空Object對象
對象的__proto__屬性: 創(chuàng)建對象時自動添加的, 默認值為構造函數(shù)的prototype屬性值
我們能直接操作顯式原型, 但不能直接操作隱式原型
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/108280.html
摘要:網(wǎng)上有很多前端的學習路徑文章,大多是知識點羅列為主或是資料的匯總,數(shù)據(jù)量讓新人望而卻步。天了解一個前端框架。也可以關注微信公眾號曉舟報告,發(fā)送獲取資料,就能收到下載密碼,網(wǎng)盤地址在最下方,獲取教程和案例的資料。 前言 好的學習方法可以事半功倍,好的學習路徑可以指明前進方向。這篇文章不僅要寫學習路徑,還要寫學習方法,還要發(fā)資料,干貨滿滿,準備接招。 網(wǎng)上有很多前端的學習路徑文章,大多是知...
摘要:現(xiàn)在我們開始說編程特性第一條變量和數(shù)據(jù)類型,賦值和輸出。從廣為流傳的說起,用建立一個新的工程在目錄建一個文件變量和數(shù)據(jù)類型,賦值和輸出在中,方法是應用程序的入口方法。變量包含三個知識點,新建變量是字符串類型給變量賦值。 用9天入門三門編程語言,有可能嘛,尤其是對沒有基礎的同學來說?對于想學好的編程的人來說,無論從哪一門語言開始入手,語言的本身其實并不是我們最應該的關心的,至少不是作為一...
摘要:選擇結構變量和數(shù)據(jù)類型,賦值和輸出算術運算選擇結構循環(huán)結構函數(shù)定義,函數(shù)調用變量作用域棧,程序運行的基石面向對象異常處理語言提供的公用包上一節(jié)介紹了的算術運算,如加減乘除等,的運算規(guī)則跟四則運算一樣。 選擇結構 變量和數(shù)據(jù)類型,賦值和輸出 算術運算 選擇結構 = 60) { System.out.println(You have passed the exam...
摘要:變量和數(shù)據(jù)類型,賦值和輸出算術運算選擇結構循環(huán)結構函數(shù)定義,函數(shù)調用變量作用域棧,程序運行的基石面向對象異常處理語言提供的公用包這次我們講的循環(huán)結構。循環(huán)結構在編程中廣泛使用,所以一定要了解好循環(huán)結構是怎么用的。正確的寫法,是用循環(huán)結構。 變量和數(shù)據(jù)類型,賦值和輸出 算術運算 選擇結構 循環(huán)結構 函數(shù)定義,函數(shù)調用 變量作用域 棧,程序運行的基石 面向對象 異常處理 語言提供的公用包...
摘要:那么這種封裝的形式就叫做函數(shù)函數(shù)的格式修飾符返回值類型函數(shù)名參數(shù)類型形式參數(shù),參數(shù)類型形式參數(shù),執(zhí)行語句返回值有可能有,有可能無函數(shù)的定義我們參考函數(shù)的格式定義幾個函數(shù)因為我們要在中調用函數(shù),所以函數(shù)也要定義成。 變量和數(shù)據(jù)類型,賦值和輸出 算術運算 選擇結構 循環(huán)結構 函數(shù)定義,函數(shù)調用 max) { max = b; } ...
閱讀 3907·2021-11-22 13:54
閱讀 2680·2021-09-30 09:48
閱讀 2363·2021-09-28 09:36
閱讀 3118·2021-09-22 15:26
閱讀 1346·2019-08-30 15:55
閱讀 2513·2019-08-30 15:54
閱讀 1427·2019-08-30 14:17
閱讀 2345·2019-08-28 18:25