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

資訊專欄INFORMATION COLUMN

JS實現一個new

tianyu / 2675人閱讀

摘要:實現一個代碼如下小白實現小黑解析思路創建一個新對象把的指向實現繼承執行構造函數傳遞參數改變指向返回解析的第一個參數是返回的是的實參因此為獲取剩下的參數新建對象把新建對象的指向的原型鏈上傳遞參數改變指向執行結果運算符用于測試構造函數的屬性是否

實現一個new
代碼如下:

var Dog = function(name) {
  this.name = name;
}
Dog.prototype.bark = function() {
  console.log("wang");
}
Dog.prototype.sayName = function() {
  console.log("my name is", this.name);
}

var xiaobai = new Dog("小白");
xiaobai.sayName();
xiaobai.bark();

//實現new
var _new = function() {
  var constructor = Array.prototype.shift.call(arguments);  //Dog
  var args = arguments;
  const obj = new Object();
  obj.__proto__ = constructor.prototype;
  constructor.call(obj, ...args);
  return obj;
}

var xiaohei = _new(Dog, "小黑");
xiaohei.bark();
xiaohei.sayName();

console.log(xiaohei instanceof Dog);    //true

解析

思路:

創建一個新對象obj

把obj的__proto__指向Dog.prototype實現繼承

執行構造函數,傳遞參數,改變this指向,Dog.call(obj, ...args)

返回obj

解析:

var constructor = Array.prototype.shift.call(arguments); //Dog
_new()的第一個參數是Dog,arguments返回的是_new的實參,因此constructor為Dog

var args = arguments; 獲取剩下的參數

const obj = new Object(); 新建對象

obj.__proto__ = constructor.prototype; 把新建對象的__proto__指向Dog的原型鏈上

constructor.call(obj, ...args);傳遞參數,改變this指向

執行結果

console.log(Dog.prototype);

console.log(xiaobai);

console.log(xiaohei);

console.log(xiaohei instanceof Dog); true

instanceof運算符用于測試構造函數的prototype屬性是否出現在對象的原型鏈中的任何位置

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/105610.html

相關文章

  • 異步發展流程 —— 手寫一個符合 Promise/A+ 規范的 Promise

    摘要:構造函數的實現我們在使用的時候其實是使用關鍵字創建了一個的實例,其實是一個類,即構造函數,下面來實現構造函數。 showImg(https://segmentfault.com/img/remote/1460000018998456); 閱讀原文 概述 Promise 是 js 異步編程的一種解決方案,避免了 回調地獄 給編程帶來的麻煩,在 ES6 中成為了標準,這篇文章重點不是敘...

    UnixAgain 評論0 收藏0
  • 從0到1實現Promise

    摘要:通過或者拿到方法回調函數的返回值,然后調用,將新增的的和傳入到中。打印結果實現方法接收一個包含多個的數組,當有一個為狀態時,整個大的為,并執行回調函數。 前言 Promise大家一定都不陌生了,JavaScript異步流程從最初的Callback,到Promise,到Generator,再到目前使用最多的Async/Await(如果對于這些不熟悉的可以參考我另一篇文章《JavaScri...

    EddieChan 評論0 收藏0
  • JS中的面向對象編程

    摘要:一面向對象編程面向對象編程是一種抽象方式創建模型的編程方式。繼承我們實現一個子類,繼承汽車類將類的屬性和方法賦值給繼承汽車類的原型鏈創建子類實例以上是中的面向對象編程的簡單介紹,如有錯誤,歡迎指出。 一.面向對象編程面向對象編程(OOP--Object Oriented Programming)是一種抽象方式創建模型的編程方式。繼承,封裝,多態是OOP的三大基本特征。許多主流編程語言都...

    lunaticf 評論0 收藏0
  • DIP、IoC、DI、JS

    摘要:維基百科該原則規定高層次的模塊不應該依賴與低層次的模塊,兩者都應該依賴于抽象接口。依賴反轉原則則顛倒這種依賴關系,并以上面提到的兩個規定作為指導思想。維基百科這些話的意思就是將依賴對象的創建和綁定轉移到被依賴對象類的外部來實現。 在這個標題中,除了 JS 是亂入之外,其它的幾個詞匯都是存在一個共同點的,那就是依賴。 那么,依賴是什么呢? 比如,現在我正在寫這篇博客文,但是我得在電腦上編...

    ssshooter 評論0 收藏0
  • js設計模式(一)-單例模式

    摘要:雖然是弱類型的語言,但是也有構造函數和實例。也就是說,我們只在第一次調用構造函數時創建新對象,之后調用返回時返回該對象即可。而我不認為這是一個單例模式的原因如下我覺得既然兩次調用同一個構造函數,返回的不是同一個對象,那不就不能成為單例模式。 寫在前面 (度過一陣的繁忙期,又可以愉快的開始學習新知識了,一年來技術棧切來切去,卻總覺得js都還沒學完-_-) 本文主要圍繞js的設計模式進行展...

    AlexTuan 評論0 收藏0

發表評論

0條評論

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