国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

new 命令的原理

aikin / 474人閱讀

摘要:創(chuàng)建一個空對象,作為將要返回的對象實例將這個空對象的原型,指向構(gòu)造函數(shù)的屬性。如果構(gòu)造函數(shù)內(nèi)部有語句,而且后面跟著一個對象,命令會返回語句指定的對象否則,就會不管語句,返回對象。

前言

之前一直沒完全弄清楚js原型鏈和繼承,有時候是自己的理解,有時候靠死記;最近要回頭看看js的基礎(chǔ),順便記錄一些內(nèi)容。摘抄于阮一峰大神;如果想好好復(fù)習(xí)一下js基礎(chǔ)內(nèi)容,戳這里https://wangdoc.com/javascrip...

使用new命令時,它后面的函數(shù)依次執(zhí)行下面的步驟。

1.創(chuàng)建一個空對象,作為將要返回的對象實例.
2.將這個空對象的原型,指向構(gòu)造函數(shù)的prototype屬性。
3.將這個空對象賦值給函數(shù)內(nèi)部的this關(guān)鍵字。
4.開始執(zhí)行構(gòu)造函數(shù)內(nèi)部的代碼

也就是說,構(gòu)造函數(shù)內(nèi)部,this指的是一個新生成的空對象,所有針對this的操作,都會發(fā)生在這個空對象上。構(gòu)造函數(shù)之所以叫“構(gòu)造函數(shù)”,就是說這個函數(shù)的目的,就是操作一個空對象(即this對象),將其“構(gòu)造”為需要的樣子。

如果構(gòu)造函數(shù)內(nèi)部有return語句,而且return后面跟著一個對象,new命令會返回return語句指定的對象;否則,就會不管return語句,返回this對象。

var Vehicle = function () {
  this.price = 1000;
  return 1000;
};

(new Vehicle()) === 1000
// false

new命令簡化的內(nèi)部流程,可以用下面的代碼表示。
function _new(/* 構(gòu)造函數(shù) */ constructor, /* 構(gòu)造函數(shù)參數(shù) */ params) {
  // 將 arguments 對象轉(zhuǎn)為數(shù)組
  var args = [].slice.call(arguments);
  // 取出構(gòu)造函數(shù)
  var constructor = args.shift();
  // 創(chuàng)建一個空對象,繼承構(gòu)造函數(shù)的 prototype 屬性
  var context = Object.create(constructor.prototype);
  // 執(zhí)行構(gòu)造函數(shù)
  var result = constructor.apply(context, args);
  // 如果返回結(jié)果是對象,就直接返回,否則返回 context 對象
  return (typeof result === "object" && result != null) ? result : context;
}

// 實例
var actor = _new(Person, "張三", 28);

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/99569.html

相關(guān)文章

  • new命令原理

    function Person(name, age) { this.name = name; this.age = age } var person = new Person(小明, 18); console.log(person.name); //小明 console.log(person.age); //18 執(zhí)行new命令會經(jīng)過以下幾個步驟 創(chuàng)建一個空對象,這個...

    Kyxy 評論0 收藏0
  • JavaScript學(xué)習(xí)之Object(下)new命令

    摘要:命令作用作用是執(zhí)行構(gòu)造函數(shù),返回實例對象上面例子是自定義一個構(gòu)造函數(shù),其最大的特點就是首字母大寫,用執(zhí)行構(gòu)造函數(shù)其中,在的執(zhí)行下,代表了實例化后的對象,這個也就有屬性注意點如果不用執(zhí)行構(gòu)造函數(shù),那么指向的是全局有兩種方式可以避免內(nèi)部定義嚴(yán)格 new命令 new作用 作用是執(zhí)行構(gòu)造函數(shù),返回實例對象 function F() { this.name = object } var ...

    Salamander 評論0 收藏0
  • Java 編譯器 javac 筆記:javac API、注解處理 API 與 Lombok 原理

    摘要:對語法樹的掃描,同樣提供了掃描器。詞法分析過程如下圖所示語法分析,即根據(jù)語法由序列生成抽象語法樹,對應(yīng)實現(xiàn)類為。生成的抽象語法樹如下圖所示的實現(xiàn)原理依賴開發(fā)的典型的第三方庫有,代碼自動生成的和,代碼檢查的和,編譯階段完成依賴注入的等。 原文:http://nullwy.me/2017/04/java...如果覺得我的文章對你有用,請隨意贊賞 javac 是 Java 代碼的編譯器 [...

    lookSomeone 評論0 收藏0
  • FE.BASE-vscode使用、原理、插件開發(fā)筆記

    摘要:插件提供內(nèi)容,負(fù)責(zé)渲染。增量更新,盡可能地減少重新渲染長時間運行的任務(wù)應(yīng)該支持,并可以取消插件能夠正確地處理對象的生命周期。使用了模式,運行可以將這個對象銷毀。 使用 命令行使用 幫助:code --help 使用已經(jīng)打開的窗口來打開文件:code -r 打開文件并滾動到特定行:code -r -g package.json:128 比較兩個文件:code -r -d a.tx...

    MingjunYang 評論0 收藏0

發(fā)表評論

0條評論

aikin

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<