JS new和instanceof的實現

2022-05-28 05:45:08 字數 661 閱讀 7582

function

isobject(value) /**

* constructor 表示 new 的構造器

* args 表示傳給構造器的引數 */

function

new(constructor, ...args) is not a constructor`);

//建立乙個原型為構造器的 prototype 的空物件 target

const target =object.create(constructor.prototype);

//將構造器的 this 指向上一步建立的空物件,並執行,為了給 this 新增例項屬性

//上一步的返回如果是物件就直接返回,否則返回 target

return isobject(result) ?result : target;

}

function

instanceof(obj, constructor)

else

if (typeof constructor !== 'function')

//主要就這一句

return

constructor.prototype.isprototypeof(obj);

}

**:

在js中 typeof和instanceof的區別

typeof與instanceof都是用來判斷資料型別的,返回值是否為空等情況,但是他們具體的情況該如何區分?1.首先兩者返回的值不同。typeof返回的值是乙個字串,而,instanceof返回的是布林型別的值,判斷是true或者false。typeof返回的型別有 number,boolean,...

Js new到底發生了什麼

在js中,我們使用了new關鍵字來進行例項化 那麼在這個new的過程中到底發生了什麼?關於建構函式的return 正常來講建構函式中是不用寫return語句的,因為它會預設返回新建立的物件。但是,如果在建構函式中寫了return語句,如果return的是乙個物件,那麼函式就會覆蓋掉新建立的物件,而返...

因為proto而產生的instanceof問題

最近有了解下new的實現原理,發現乙個關於instanceof的問題。function foo name,age function createclass let obj createclass foo,zl console.log obj instanceof foo false 複製 我又去了解...