首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JavaScript Math 物件為何能呼叫 apply()?原型鏈繼承自 Object.prototype

     編輯:程式設計疑難解答

現象

Math.min.apply(null, [3,1,4]); // 1

Math 非函數,但可呼叫 apply。

原理解析

  1. Math 為內建物件,其 [[Prototype]] 指向 Object.prototype。
  2. Function.prototype.apply 定義於 Function.prototype。
  3. Math.min、Math.max 等屬性值為函數,因此它們擁有 apply 方法。
  4. 呼叫 Math.min.apply(...) 實際上是 Function.prototype.apply.call(Math.min, ...)。

驗證

console.log(Math.min instanceof Function); // true
console.log(Math instanceof Function);     // false
console.log(Object.getPrototypeOf(Math) === Object.prototype); // true

結論

Math 本身不能直接用 apply,但其方法屬性(如 min、max)為函數,故可透過它們間接使用 apply。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved