js 函數中方法定義在函數內部,定義在函數外,與prototype上的區別

js 函數中方法定義在函數內部,定義在函數外,與prototype上的區別

  • 區別
方法調用描述
構造函數內函數名直接調用報錯
函數外函數名直接調用正常執行
函數外 prototype上函數名直接調用報錯
構造函數內實例化對象調用正常執行
函數外實例化對象調用報錯
函數外 prototype上實例化對象調用正常執行

在函數內用this定義的方法,只能用實例化對象來調用
在函數外定義的方法,只能用構造函數調用
在函數外 prototype上定義的方法,只能用實例化對象來調用。
this定義的方法,與prototype上的方法的區別是 this的方法,可以訪問到函數內的私有變量

<script>
        //首先創建一個函數
        function Person(name, age) {
            this.name = name;
            this.age = age;
            this.write = function () {
                console.log('hello function');
            }
        }
        Person.write1 = function () {
            console.log('hello jq')
        }
        Person.prototype.write2 = function () {
            console.log('告辭 node.js');
        }
        //現在來驗證 
        //首先Person直接調用三個方法
        // Person.write();  //× 報錯
        // Person.write1();    //hello jq
        // Person.write2();    //× 報錯

        //然後用對象的實例來調用這三個方法
        let a = new Person();
        a.write(); // hello function
        // a.write1(); //× 報錯
        a.write2(); //告辭 node.js
    </script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章