javascript prototype 实现类似OOP继承

这里要说明的是,公有属性(使用this.修饰符)可以被覆盖,私有属性(使用var 修饰符)不能被覆盖

子类不能访问父类的私有属性,父类的方法正常访问父类的私有变量。

function Vegetable(){
	this.taste='delicious';
	var a = 'I\'m Vegetable\'a!'
	
	this.fun1 = function(){
		alert('Vegetable fun1 doing...');
	}
	
	this.fun3 = function(){
		alert(a);
	}
}

function Celery(){
	var a = 'I\'m Celery\' a';
	this.color = 'green';	
	this.taste = 'bad';
	
	this.fun1a = function(){
		alert('Celeryfun1 doing...');
	}
	this.fun2 = function(){
		alert('Celery fun2 doing...');
	}
	
	this.fun4 = function(){
		alert(a);
	}
}

Celery.prototype = new Vegetable();
var stick = new Celery();
var polymorphed = stick.taste;

//alert(polymorphed);
//alert(stick.color);

//stick.fun1();
//stick.fun2();
//stick.fun3();
stick.fun4();



你可能感兴趣的:(JavaScript,function,prototype,oop,fun)