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

首頁 > 編程 > JavaScript > 正文

javascript中使用new與不使用實例化對象的區別

2019-11-20 12:12:13
字體:
來源:轉載
供稿:網友

我們先來看個實例

function Me(name,age,job){  this.name = name;  this.age = age;  this.job = job;}

請問這以下兩種實例化對象方式有什么區別呢?

var mefun1 = new Me('fei','20','it');var mefun2 = Me('fei','20','it');

簡單的說

第一種是構造函數式,即通過new運算符調用構造函數Function來創建函數
第二種不是實例化,只是調用函數把返回值賦給變量。

再擴展下

JavaScript 中并沒有真正的類,但JavaScript 中有構造函數和new 運算符。構造函數用來給實例對象初始化屬性和值。任何JavaScript 函數都可以用做構造函數,構造函數必須使用new 運算符作為前綴來創建新的實例。

new 運算符改變了函數的執行上下文,同時改變了return 語句的行為。實際上,使用new和構造函數很類似于傳統的實現了類的語言:

// 實例化一個Mevar alice = new Me('alice', 18, 'Coder');// 檢查這個實例assert( alice instanceof Me );

構造函數的命名通常使用駝峰命名法,首字母大寫,以此和普通的函數區分開來,這是
一種習慣用法。

// 不要這么做!Me('alice', 18, 'Coder'); //=> undefined

這個函數只會返回undefined,并且執行上下文是window(全局)對象,無意間創建了3個全局變量name,age,job。調用構造函數時不要丟掉new 關鍵字。

當使用new 關鍵字來調用構造函數時,執行上下文從全局對象(window)變成一個空的上下文,這個上下文代表了新生成的實例。因此,this 關鍵字指向當前創建的實例。盡管理解起來有些繞,實際上其他語言內置類機制的實現也是如此。

默認情況下,如果你的構造函數中沒有返回任何內容,就會返回this――當前的上下文。

要不然就返回任意非原始類型的值.

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 若羌县| 定边县| 东阳市| 腾冲县| 板桥市| 平远县| 横山县| 陵水| 宁蒗| 华池县| 澄江县| 高雄县| 建湖县| 文登市| 紫云| 普洱| 南漳县| 页游| 嫩江县| 来宾市| 互助| 临海市| 保定市| 黎川县| 福建省| 宜宾县| 永丰县| 蛟河市| 巩留县| 鲁山县| 冀州市| 读书| 肥西县| 周口市| 织金县| 青冈县| 丹凤县| 泰顺县| 石嘴山市| 大竹县| 湘潭县|