1. 程式人生 > >js 原型中的函式互相呼叫測試

js 原型中的函式互相呼叫測試

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)
}