js 原型中的函式互相呼叫測試
阿新 • • 發佈:2018-11-03
js 在宣告物件的時候常用建構函式模式和原型模式組合的形式
建構函式模式每個例項生成的屬性各不相同,但生成方法時每個方法都要在每個例項上重新建立一遍(如果該方法實現的功能是一樣的(共享的方法),那麼就增加了記憶體開銷,[你也可以把共享的方法放在函式外面,那麼這樣就感覺函式的全域性作用域有點名不副實了,因為它只服務於建構函式中的那一個部分,具體看例1]
剛好這個問題可以通過原型解決)
原型模式的優點是定義例項共享
的屬性和方法
function Person(sex){ this.sex = sex; } Person.prototype = { constructor: Person, name: function(){ console.log("name") }, age: function(){ this.name(); console.log("age") } }; var a = new Person(); a.age(); // name age
例1
function Person(sex){
this.sex = sex;
this.saySex = saySex;
// this.saySex = function (){console.log(this.sex)} 就等價於 this.saySex = new Function(console.log(this.sex));
}
//該函式只是為了實現Person例項中的某個功能,全域性作用域中定義的函式只能被某個物件呼叫,有點名不副實,所以才提出原型
function saySex(){
console.log(this.sex)
}