摘要:實現一個代碼如下小白實現小黑解析思路創建一個新對象把的指向實現繼承執行構造函數傳遞參數改變指向返回解析的第一個參數是返回的是的實參因此為獲取剩下的參數新建對象把新建對象的指向的原型鏈上傳遞參數改變指向執行結果運算符用于測試構造函數的屬性是否
實現一個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為Dogvar 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
摘要:構造函數的實現我們在使用的時候其實是使用關鍵字創建了一個的實例,其實是一個類,即構造函數,下面來實現構造函數。 showImg(https://segmentfault.com/img/remote/1460000018998456); 閱讀原文 概述 Promise 是 js 異步編程的一種解決方案,避免了 回調地獄 給編程帶來的麻煩,在 ES6 中成為了標準,這篇文章重點不是敘...
摘要:通過或者拿到方法回調函數的返回值,然后調用,將新增的的和傳入到中。打印結果實現方法接收一個包含多個的數組,當有一個為狀態時,整個大的為,并執行回調函數。 前言 Promise大家一定都不陌生了,JavaScript異步流程從最初的Callback,到Promise,到Generator,再到目前使用最多的Async/Await(如果對于這些不熟悉的可以參考我另一篇文章《JavaScri...
摘要:一面向對象編程面向對象編程是一種抽象方式創建模型的編程方式。繼承我們實現一個子類,繼承汽車類將類的屬性和方法賦值給繼承汽車類的原型鏈創建子類實例以上是中的面向對象編程的簡單介紹,如有錯誤,歡迎指出。 一.面向對象編程面向對象編程(OOP--Object Oriented Programming)是一種抽象方式創建模型的編程方式。繼承,封裝,多態是OOP的三大基本特征。許多主流編程語言都...
摘要:維基百科該原則規定高層次的模塊不應該依賴與低層次的模塊,兩者都應該依賴于抽象接口。依賴反轉原則則顛倒這種依賴關系,并以上面提到的兩個規定作為指導思想。維基百科這些話的意思就是將依賴對象的創建和綁定轉移到被依賴對象類的外部來實現。 在這個標題中,除了 JS 是亂入之外,其它的幾個詞匯都是存在一個共同點的,那就是依賴。 那么,依賴是什么呢? 比如,現在我正在寫這篇博客文,但是我得在電腦上編...
摘要:雖然是弱類型的語言,但是也有構造函數和實例。也就是說,我們只在第一次調用構造函數時創建新對象,之后調用返回時返回該對象即可。而我不認為這是一個單例模式的原因如下我覺得既然兩次調用同一個構造函數,返回的不是同一個對象,那不就不能成為單例模式。 寫在前面 (度過一陣的繁忙期,又可以愉快的開始學習新知識了,一年來技術棧切來切去,卻總覺得js都還沒學完-_-) 本文主要圍繞js的設計模式進行展...
閱讀 1209·2021-11-17 09:33
閱讀 3617·2021-09-28 09:42
閱讀 3345·2021-09-13 10:35
閱讀 2504·2021-09-06 15:00
閱讀 2450·2021-08-27 13:12
閱讀 3617·2021-07-26 23:38
閱讀 1855·2019-08-30 15:55
閱讀 546·2019-08-30 15:53