国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript 原型的概念及使用

2019-11-06 06:12:36
字體:
來源:轉載
供稿:網友

1. 原型的概念

(1)為什么需要原型?描述一個構造函數的時候,實際上是在描述對象需要什么成員js是解釋型語言,凡是需要解釋的代碼,都會被執行一次,意味著下面代碼會創建多個對象
var obj;for(var i=0; i<10; i++){    obj = {};}再比如下面代碼,永遠不可能相等
console.log([] == []); // falseconsole.log({} == {}); // falseconsole.log(function(){} == function(){}); // false對于引用類型,==和===都是比較內存地址那么構造函數
function Person(name,age,gender){    this.name = name;    this.age = age;    this.gender = gender;    this.sayHello = function() {};}var p1 = new Person('jim',19, '男');var p2 = new Person('jack',20, '男');在內存中會有兩個sayHello副本,但邏輯一模一樣,浪費資源需要將像方法這些可以共享的數據單獨存儲起來,讓每個對象都可以在方法上得到共享。因此引入一個特殊的對象,以存儲共享數據,然后每個對象都可以直接使用共享的數據。(2)什么是原型?原型只是一個很普通的對象,但它專門給一些對象存儲共享的數據,所以給它取一個名字,叫原型。(3)原型的結構?① 凡是寫一個函數的時候,內部就會自動創建一個對象,該對象使用 函數.PRototype 來訪問;② 該對象只包含一個數據,即 constructor 屬性,用于描述該對象對應的函數;③ 該對象有一個使用特征:如果將函數作為構造函數來使用,創建出來的對象默認連接到該特殊對象中;(所謂連接到特殊對象,是指特殊對象中的成員,可以直接被該構造函數創建出來的對象所使用)這個特殊對象就是原型(原來的/原始的形態/模型)。(4)補充一些概念(依照面向對象語言):
概念詞作用稱為
構造函數constructor用來描述對象應該具有什么成員使用類 class
屬性 property用于表示對象的特征數據字段 field
方法 method用于描述對象的行為函數 function
構造函數創建的對象稱為該構造函數(該類)的實例,將這個過程稱為實例化實例instance
由于這個特殊對象既可以與構造函數聯系起來,又可以與實例對象聯系起來,那么對于構造函數,這個特殊對象是使用 prototype 屬性來引用的,將其稱為構造函數的原型屬性,簡稱為原型;由于實例對象默認連接到這個特殊對象中,因此將這個特殊對象稱為實例對象的原型對象,簡稱為原型。

2. 如何使用原型

原型的使用就是在原型中提供方法,刪除方法等。一般給原型增加的是方法,少有屬性。
// 給原型添加屬性的例子function Person(){}Person.prototype.type = 'Person';var p = new Person();p.type; // 'Person'(1)直接利用對象的動態特性添加成員
構造函數.prototype.XXX = xxx;(2)利用直接替換原型對象的方法
構造函數.prototype = {    constructor: 構造函數,    XXX1: xxx1,    XXX2: xxx2,    XXX3: xxx3,    ...}//原來的原型就被丟棄掉了在利用替換法使用原型的時候,容易出現的問題:實例在被創建的那一刻它的原型就被固定了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 治县。| 南涧| 娱乐| 晋宁县| 永顺县| 寿阳县| 辰溪县| 玉龙| 诸暨市| 沽源县| 华蓥市| 高密市| 宁化县| 祁阳县| 资中县| 金塔县| 九龙城区| 长岛县| 宕昌县| 霍林郭勒市| 蕲春县| 磐安县| 徐闻县| 樟树市| 吉林省| 泾源县| 孝义市| 巨野县| 泾阳县| 黔江区| 金昌市| 长海县| 乌什县| 泸州市| 伊川县| 灵丘县| 海阳市| 治多县| 峨山| 桂平市| 舞钢市|