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

首頁 > 編程 > JavaScript > 正文

js核心基礎之構造函數constructor用法實例分析

2019-11-19 11:36:15
字體:
來源:轉載
供稿:網友

本文實例講述了js核心基礎之構造函數constructor用法。分享給大家供大家參考,具體如下:

在js中,可以利用構造函數來創建特定類型的對象,其中,有一些原生的構造函數,Object、Array、等等,所以,當type of Object時,返回的是function。此外,我們還可以創建自定義的構造函數,從而自定義對象的屬性以及方法。

例如:

function Person(name,age,job) {  this.name=name;  this.age=age;  this.job=job;  this.sayName=function () {    alert(this.name);  }}var person1=new Person('zhy',18,'SoftWare Engineer');var person2=new Person('zhy2',19,'Doctor');

注意:要創建Person的新實例,必須使用new操作符。如果不使用new,則屬性和方法都被添加給了window對象了。

這種方式調用構造函數實際上會經歷一下4個步驟:

① 創建一個新對象;
② 將構造函數的作用域賦給新對象,因此,this就指向了這個新對象;
③ 執行構造函數中的代碼,即為這個新對象添加屬性、方法;
④ 返回新對象。

缺點:

在上述例子中,我們可以知道,每個實例都有一個sayName的方法,但是

console.log(person1.sayName==person2.sayName);//false

因為,每創建一個實例的時候,實際上所做的是下面這種:

function Person(name,age,job) {  this.name=name;  this.age=age;  this.job=job;  this.sayName=new Function () {    alert(this.name);  }}

所以,person1的sayName跟person2的sayName不是同一個實例。但是我們可以這樣做:

function Person(name,age,job) {  this.name=name;  this.age=age;  this.job=job;  this.sayName=sayName; }function sayName(){   alert(this.sayName);}

這樣一來,每個實例對象里面 的sayName函數指向的都是同一個函數。

可是問題又來了,如果對象有很多的函數要定義,那么就要定義很多個全局函數,沒有封裝性可言了,好在這些問題可以通過使用原型模式來解決。

本文參照《JavaScript高級程序編程》

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 马龙县| 璧山县| 永兴县| 太湖县| 周宁县| 谷城县| 盐城市| 兴安县| 鞍山市| 南岸区| 松阳县| 龙州县| 潼南县| 汝阳县| 绍兴县| 福建省| 元朗区| 周至县| 陕西省| 灵山县| 吉林省| 措勤县| 方城县| 麟游县| 长治市| 禹州市| 新密市| 揭东县| 静海县| 靖安县| 郑州市| 枞阳县| 东阳市| 墨江| 双辽市| 佛教| 莲花县| 枣阳市| 扶沟县| 六枝特区| 松阳县|