Skip to content

arjenhill/factoryjs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

sFactory.js

在javascript中,我们希望提供一个专门的方法,只要用户传入相应的参数,或按照一定简单格式就能创建一个类。特别是子类。

一个精巧的类工厂也不过百行左右,由于主流框架的类工厂太依赖他们庞杂的工具函数,导致使用起来特别复杂。

1.使用示范:

	var Dog = sFactory(function(proto, superProto){
		proto.init = function(name) { //构造函数
			this.name = name;
		}
		proto.move = function(meters){ //原型方法
			console.log(this.name + " moved " + meters + " m.")
		}
	});
	var a = new Dog("aaa")
	var b = new Dog("bbb"); //无实例变化
	a.move(1);
	b.move(2);
	

2.尝试创建更简洁的定义方式

	var Snake = sFactory (Dog, function(snake, animal){
		snake.init = function(name, eyes){
			animal.init.call(this, arguments); //调运父类构造器
			this.eyes = 2;
		}
		snake.move = function() {
			console.log('slithering...');
			animal.move.call(this, 5); //调运父类同名方法
		}
	});
	var s = new Snake("snake", 1);
	s.move();
	console.log(s.name);
	console.log(s.eyes);
	

3.私有属性演示,由于放在函数体内集中定义,因此安全可靠!

	var Cobra = sFactory(Snake, function(cobra){
		var age = 1;//私有属性
		//这里还可以编写私有方法
		cobra.glow = function(){ //长大
			return age++;
		}
	});
	var c = new Cobra("cobra");
	console.log(c.glow()); //1
	console.log(c.glow()); //2
	console.log(c.glow()); //3
	

About

一个精巧的类工厂也不过百行左右

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published