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

猜你喜欢

转载自blog.csdn.net/u013270347/article/details/83413192