鍍金池/ 問答/HTML/ js原型鏈問題

js原型鏈問題

    Function.prototype.method1 = function(){
      console.log("function");
    }
    
    function func1(a,b,c){
      return a+b+c;
    }
    
    func1.method1();
    func1.method1.method1();

我的理解是:
fun1.method1(); 調(diào)用的是Function.prototype里的method1()方法。
func1.method1.method1();
不懂為什么 func1.method1 里能調(diào)用 method1()方法?

回答
編輯回答
還吻

method1本身也是函數(shù),也繼承了原型鏈,自然可以調(diào)用.

2017年5月27日 19:19
編輯回答
浪蕩不羈

func1.method1實際上就是Function.prototype.method1,F(xiàn)unction.prototype.method1被你寫成了一個function 自然就是Funtion的實例,有method1方法。

func1.method1.method1.method1.method1.method1.method1()
//無限循環(huán)
2017年4月22日 20:14
編輯回答
尋仙

JavaScript 中,所有函數(shù)都是 Function 的實例,F(xiàn)unction 原型上的方法當然會繼承到其下所有的實例了。而這門語言的函數(shù)也比較特殊,準確說應(yīng)該叫“函數(shù)對象”,它同時擁有 prototype 和 proto 兩個屬性,因此其原型鏈上的繼承可以發(fā)生循環(huán)引用。
從這里也能窺見一些閉包的原理——作用域鏈。

2018年1月7日 01:10
編輯回答
冷溫柔

JavaScript的世界里,函數(shù)也是對象,函數(shù)有一個包裝對象Function。

你在Function對象的原型上加了method1方法,那么,所有的函數(shù)的原型上都會有method1方法。

method1本身就是一個函數(shù),也繼承了原型鏈,所有func1.method1里也能調(diào)用method1方法

2017年6月9日 13:29