这里有新鲜出炉的 Javascript 教程,程序狗速度看过来!
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
这篇文章主要介绍了 JS 仿 Base.js 实现的继承, 结合具体实例形式分析了 javascript 扩展操作及面向对象程序设计相关实现技巧, 需要的朋友可以参考下
本文实例讲述了 JS 仿 Base.js 实现的继承。分享给大家供大家参考,具体如下:
- var Klass = function() {};
- Klass.extendClass = (function() {
- var F = function() {};
- return function(C, P) {
- F.prototype = P.prototype;
- C.prototype = new F();
- C.uper = P.prototype;
- C.prototype.constructor = C;
- };
- })();
- Klass.extend = function(props) {
- var _slice = Array.prototype.slice;
- var Glass = function() {
- /*if (Glass.uper && Glass.uper.hasOwnProperty("init")) {
- Glass.uper.init.apply(this, _slice.call(arguments))
- }*/
- if (Glass.prototype.hasOwnProperty("init")) {
- Glass.prototype.init.apply(this, _slice.call(arguments));
- }
- };
- Klass.extendClass(Glass, this);
- Glass.extend = this.extend;
- for (var key in props) {
- if (props.hasOwnProperty(key)) {
- Glass.prototype[key] = props[key];
- }
- }
- return Glass;
- };
example:
- var A = Klass.extend({
- init: function(name) {
- this.name = name;
- console.log('A constructor is running!');
- },
- getName: function() {
- return this.name;
- }
- });
- var B = A.extend({
- init: function(name) {
- this.name = name;
- console.log('B constructor is running!');
- },
- getName: function() {
- return this.name;
- },
- a: 'b'
- });
- var C = B.extend({
- init: function(name) {
- console.log('C constructor is running!');
- },
- c: 'c',
- getName: function() {
- var name = C.uper.getName.call(this);
- return 'Hi, I\'m' + this.name;
- }
- });
- var c1 = new C('zlf');
- console.log(c1.getName());
希望本文所述对大家 JavaScript 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0521/334229.html