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

首頁 > 語言 > JavaScript > 正文

JavaScript編程設計模式之構造器模式實例分析

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

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

經典的OOP語言中,構造器(也叫構造函數)是一個用于初始化對象的特殊方法。在JS中,因為一切皆對象,對象構造器經常被提起。

對象構造器用于建立制定類型(Class)的對象,可以接受參數用于初始化對象的屬性和方法。

對象建立

在JS中,有三個常用的方法用于建立對象:

//1, 推薦使用var newObject = {};//2,var newObject = Object.create( null );//3, 不推薦var newObject = new Object();

但是,這也只是建立了三個空對象, 并沒有任何屬性和方法。我們可以通過以下四種方法,為對象設立屬性和方法。

// ECMAScript 3 兼容的方式// 1. 常規對象定義方式//設置屬性newObject.someKey = "Hello World";//獲取屬性var key = newObject.someKey;// 2. 方括號方式// 設置屬性newObject["someKey"] = "Hello World";//獲取屬性var key = newObject["someKey"];// 僅僅用于ECMAScript 5// 3. Object.defineProperty// 設置屬性Object.defineProperty( newObject, "someKey", { value: "for more control of the property's behavior",  writable: true,  enumerable: true,  configurable: true});//可以通過下面的函數簡化屬性設置var defineProp = function ( obj, key, value ){  config.value = value;  Object.defineProperty( obj, key, config );};// 使用方法var person = Object.create( null );defineProp( person, "car", "Delorean" );defineProp( person, "dateOfBirth", "1981" );defineProp( person, "hasBeard", false );// 4. Object.defineProperties//設置屬性Object.defineProperties(newObject,{ "someKey": { value: "Hello World", writable: true }, "anotherKey": { value: "Foo bar", writable: false }});// 3和4的獲取屬性方法同1,2.

基本的構造器

我們知道, JS中沒有Class的概念,但它也支持用構造器建立對象。

通過使用【new】關鍵字,我們可以使一個函數的舉止類似于構造器,從而建立自己的對象實例。

一個基礎的構造器形式如下:

function Car( model, year, miles ) {  //這里,this指向新建立的對象自己  this.model = model;  this.year = year;  this.miles = miles;  this.toString = function () {    return this.model + " has done " + this.miles + " miles";  };}//用法// 建立兩個car實例var civic = new Car( "Honda Civic", 2009, 20000 );var mondeo = new Car( "Ford Mondeo", 2010, 5000 );// 輸出結果console.log( civic.toString() );console.log( mondeo.toString() );

這就是簡單的構造器模式, 它有兩個主要問題,

第一,它很難繼承;第二,toString()被每一個對象實例定義一遍,作為函數,它應該被每一個Car類型的實例共享。

使用原型的構造器

JS中有一個很好的特性:原型【Prototype】,

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

圖片精選

主站蜘蛛池模板: 新巴尔虎右旗| 黄龙县| 米脂县| 封开县| 屏南县| 泌阳县| 新巴尔虎右旗| 惠水县| 改则县| 岐山县| 西华县| 宣化县| 上犹县| 华宁县| 黄大仙区| 聂拉木县| 开远市| 万载县| 来凤县| 张家界市| 稻城县| 乌兰县| 清河县| 屏东市| 灵武市| 津市市| 仙居县| 桦川县| 大名县| 前郭尔| 滁州市| 台湾省| 丰镇市| 田阳县| 个旧市| 佛冈县| 临夏市| 石柱| 贵州省| 大姚县| 永定县|