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

首頁 > 語言 > JavaScript > 正文

JavaScript設計模式之原型模式分析【ES5與ES6】

2024-05-06 15:32:23
字體:
來源:轉載
供稿:網友

本文實例講述了JavaScript設計模式之原型模式。分享給大家供大家參考,具體如下:

從設計模式的角度講,原型模式是用于創建對象的一種模式,若需要創建一個對象,一種方法是先指定其類型,然后通過類來創建這個對象,另一種方法是通過原型來創建,不必關心對象的具體類型,而是找到一個對象,然后通過克隆來創建一個一模一樣的對象。

ES5提供了Object.create(obj)方法來克隆對象,在不支持Object.create(obj)方法的瀏覽器中,可以使用以下代碼:

Object.create = Object.create || function(obj) {  function Func() {};  Func.prototype = obj;  return new Func();}

一、JavaScript中的原型繼承:

1. 大部分的數據都是對象;

JavaScript有兩種類型機制:基本類型和對象類型。基本類型包括undefinednumberbooleanstringfunctionobject

JavaScript設計者的本意在于,除了undefined,一切都應該是對象,為了實現這一目標,number、boolean、string這幾種基本數據類型通過對應的包裝類Number、Boolean、String來變成對象類型數據。

JavaScript中的根對象是Object.prototype對象,Object.prototype對象是一個空的對象。JavaScript的每個對象,實際上都是從Object.prototype對象克隆而來的,Object.prototype對象就是它們的原型。

ES5提供了getPrototypeOf來查看對象的原型,Object.getPrototypeOf(任何對象) == Object.prototype都會返回true。

2. 要得到一個對象,不是通過實例化類,而是找到一個對象作為原型并克隆它;

JavaScript沒有類的概念,new運算符后面的不是類,而是構造器。當使用new運算符來創建對象時,實際上也是先克隆Object.prototype對象,再進行一些額外操作的過程。

3. 對象會記住它的原型;

其實不能說對象有原型,而只能說對象的構造器有原型。JavaScript給對象提供了一個名為__proto__屬性,默認指向它的構造器的原型,__proto__屬性是對象與構造器的原型聯系起來的紐帶,如:person.__proto__ == Person.prototype

4. 若對象無法響應某個請求,它會把該請求委托給它自己的原型。

這是原型繼承的精髓,當一個對象無法響應某個請求時,會順著原型鏈把請求傳遞下去,直到遇到一個可以處理該請求的對象為止。但是,原型鏈并不是無限長的,只會查找到Object.prototype對象為止,由于Object.prototype的原型是null,因此請求無法找到可以處理的對象,返回undefined

二、原型繼承的未來

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 庐江县| 新邵县| 青州市| 武山县| 东丰县| 遂宁市| 祁东县| 长乐市| 巴塘县| 和龙市| 米脂县| 和龙市| 嵊泗县| 仙桃市| 商南县| 滦南县| 泊头市| 泸西县| 保靖县| 务川| 云龙县| 克拉玛依市| 林周县| 宁强县| 诸暨市| 桓台县| 南开区| 什邡市| 吉木乃县| 昌宁县| 灵璧县| 建德市| 三门峡市| 东丰县| 香河县| 延庆县| 成都市| 汶川县| 屯留县| 丹凤县| 西城区|