用面向对象的Javascript来介绍一下自己

看了一道题目《用面向对象的Javascript来介绍一下自己》,然后自己觉得挺好玩的,所以就编写如下的代码。

// HELPER
function extend(sup, overrides) {
	var sub = overrides && overrides.constructor || function() {
		sup.apply(this, arguments);
	};
	var fn = function() {};
	var subp;
	fn.prototype = new sup;
	subp = sub.prototype = fn.prototype;
	subp.constructor = sub;
	apply(subp, overrides);
	sub.superClass = sup.prototype;
	return sub;
}

function apply(o, c) {
	if (o && c && typeof c == 'object') {
		for (var p in c) {
			o[p] = c[p];
		}
	}
	return o;
}

function FrontEnder() {
	this.skills = ['HTML', 'CSS', 'JavaScript'];
}

apply(FrontEnder.prototype, {
	code: function() {
		console.log('我能编写处理业务逻辑代码');
	},
	paint: function() {
		console.log('我能还原设计稿');
	},
	debug: function() {
		console.log('我能使用工具调试代码');
	}
});

var Me = extend(FrontEnder, {
	constructor: function() {
		// 个人的性格是怎么样的?等完善
		var _character = '';
		return function Me(config) {
			config = config || {};
			Me.superClass.constructor.call(this);
			this.skills = this.skills.concat(['HTML5', 'CSS3', 'Grunt', 'Zepto', 'Webapp', 'ChromeDevtool']);
			apply(this, config);
		}
	}(),
	paint: function() {
		Me.superClass.paint.call(this);
		console.log('我可以用CSS3、HTML5还原设计稿');
	},
	code: function() {
		Me.superClass.code.call(this);
		console.log(function() {
			/**
			1. 根据规范来命名如驼峰、_、$等;
			2. 使用闭包来避免变量污染;
			3. 相同处理逻辑代码抽出来作为一个功能模块;
			4. 避免与HTML、CSS产生耦合;
			5. 注意代码的性能优化
			*/
		}.toString().split('\n').slice(2, -2).toString().replace(/\t/g, '').split(',').join('\n'))
	},
	manage: function() {
		console.log('我有一个属于自己的代码库和记录知识点的博客');
	},
	habit: function() {
		console.log('twitter、HTML5Rock、CSS3-trick、W3.org...');
	},
	enjoy: function() {
		console.log('我喜欢打篮球和看NBA,最喜欢的球员是Steve·Nash');
	}
});

var me = new Me({
	EnglishName: 'monkindey',
	Email: '[email protected]',
	School: '广东工业大学计算机学院网络工程 11级'
});

console.dir(me);

复制代码到chrome开发者工具中,效果可能会更好点。

你可能感兴趣的:(tattle,javascript)