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>