javascript面向对象编程代码

代码如下:

var orchard = function (){ //基类型构造函数代理 静态方法都在代理函数上
this.constructor && this.constructor.apply(this,arguments);
};
orchard.extend = function() {
var parentObj = this;
var parameters = parentObj.parameters ?
parentObj.parameters.concat(_.toArray(arguments)) : _.toArray(arguments);
var thisObj = function(){ //继承类型构造函数代理
var newparameters = parameters.concat(_.toArray(arguments));
this.constructor && this.constructor.apply(this,newparameters);
};
_.extend(thisObj,parentObj);
_.extend(thisObj.prototype,parentObj.prototype);
thisObj.parameters = parameters;
thisObj.base = thisObj.prototype.base = parentObj; //基类型的代理函数
thisObj.supper = thisObj.prototype.supper = parentObj.prototype; //基类型的构造函数 类成员都在构造函数上
return thisObj;
};
orchard.define = function(object){
if(typeof object === "undefined") object = {constructor: function(){}};
this.prototype = object.constructor;
this.prototype.constructor = this.prototype;
for(var name in this.base)
if(typeof this[name] === "undefined")
this[name] = this.base[name];
for(var name in this.supper)
if(typeof this.prototype[name] === "undefined")
this.prototype[name] = this.supper[name];
for(var i = 0; i < arguments.length; i++)
_.extend(this.prototype,arguments[i]);
this.prototype.base = this.base;
this.prototype.supper = this.supper;
this.supper = undefined;
delete this.supper;
return this;
};
orchard.definenew = function(){
var newclass = this.extend();
return define.apply(newclass,arguments);
};

调用:


代码如下:

var Person = orchard.definenew({
constructor: function(name){
this.name = name;
},
say: function(){ return "Hello, i'm " + name;}
});
var aBen = Person.extend("aBen");
aBen.define({
constructor: function(){
this.supper.apply(this,arguments);
}
});
var aben = new aBen();
alert(aben.say());

思路就是这样的,代码没验证过。分享的思路,大家自己看着办。哈哈~~

(0)

相关推荐

  • Javascript 面向对象编程(coolshell)

    这两天有个前同事总在问我Javascript面向对象的东西,所以,索性写篇文章让他看去吧,这里这篇文章主要想从一个整体的角度来说明一下Javascript的面向对象的编程.(成文比较仓促,应该有不准确或是有误的地方,请大家批评指正) 另,这篇文章主要基于 ECMAScript 5, 旨在介绍新技术.关于兼容性的东西,请看最后一节. 初探 我们知道Javascript中的变量定义基本如下: 复制代码 代码如下: var name = 'Chen Hao';; var email = 'haoel(

  • Javascript面向对象编程

    Javascript的重要性 使用率 1.在web应用中,涉及到前端界面编程基本上都要用到javascript语言: 2.Web2.0及Ajax推动了javascript语言. 3.随着大量的c/s应用转向b/s,富客户端技术的不断推广,javascript语言的应用范围还将不断加大: javascript的特点 简单 动态 基于对象(面向对象) Javascript面向对象概述 Javascript是一种面向(基于)对象的动态脚本语言,是一种基于对象(Object)和事件驱动(EventDri

  • javascript面向对象编程代码

    复制代码 代码如下: var orchard = function (){ //基类型构造函数代理 静态方法都在代理函数上 this.constructor && this.constructor.apply(this,arguments); }; orchard.extend = function() { var parentObj = this; var parameters = parentObj.parameters ? parentObj.parameters.concat(_.

  • 再谈javascript面向对象编程

    另外这篇文章是一篇入门文章,我也是才开始学习Javascript,有一点心得,才想写一篇这样文章,文章中难免有错误的地方,还请各位不吝吐槽指正 吐槽Javascript 初次接触Javascript,这门语言的确会让很多正规军感到诸多的不适,这种不适来自于Javascript的语法的简练和不严谨,这种不适也来自Javascript这个悲催的名称,我在想网景公司的Javascript设计者在给他起名称那天一定是脑壳进水了,让Javascript这么多年来受了这么多不白之冤,人们都认为他是Java的

  • Javascript 面向对象编程(一) 封装

    学习Javascript,最难的地方是什么? 我觉得,Object(对象)最难.因为Javascript的Object模型很独特,和其他语言都不一样,初学者不容易掌握. 下面就是我的学习笔记,希望对大家学习这个部分有所帮助.我主要参考了以下两本书籍: <面向对象的Javascript>(Object-Oriented JavaScript) <Javascript高级程序设计(第二版)>(Professional JavaScript for Web Developers, 2nd

  • 浅谈javascript 面向对象编程

    感叹是为了缓解严肃的气氛并引出今天要讲的话题,"javascript面向对象编程",接下来,我们围绕面向对象的几大关键字:封装,继承,多态,展开. 封装:javascript中创建对象的模式中,个人认为通过闭包才算的上是真正意义上的封装,所以首先我们先来简单介绍一下闭包,看下面这个例子: 复制代码 代码如下: <script type="text/javascript"> function myInfo(){ var name ="老鱼&quo

  • JavaScript 面向对象编程(2) 定义类

    本文承接上一篇JavaScript面向对象编程(1) 基础. 上篇说过,JavaScript没有类的概念,需要通过函数来实现类的定义.先通过一个例子说明: 复制代码 代码如下: function myClass() { var id = 1; var name = "johnson"; //properties this.ID = id; this.Name = name; //method this.showMessage = function() { alert("ID:

  • 老鱼 浅谈javascript面向对象编程

    感叹是为了缓解严肃的气氛并引出今天要讲的话题,"javascript面向对象编程",接下来,我们围绕面向对象的几大关键字:封装,继承,多态,展开. 封装:javascript中创建对象的模式中,个人认为通过闭包才算的上是真正意义上的封装,所以首先我们先来简单介绍一下闭包,看下面这个例子: 复制代码 代码如下: <script type="text/javascript">// <![CDATA[ function myInfo(){ var nam

  • JavaScript面向对象编程入门教程

    尽管面向对象JavaScript与其他语言相比之下存在差异,并由此引发了一些争论,但毋庸置疑,JavaScript具有强大的面向对象编程能力 本文先从介绍面向对象编程开始,然后回顾JavaScript对象模型,最后演示JavaScript中的面向对象编程概念. JavaScript回顾 如果你对诸如变量(variables).类型(types).函数(functions).以及作用域(scope)等JavaScript概念觉得心里没底,那么你可以阅读重新介绍JavaScript中的这些主题.你还

  • 深入剖析JavaScript面向对象编程

    二. Javascript 面向对象编程:构造函数的继承 本节主要介绍,如何生成一个"继承"多个对象的实例. 比如,现在有一个"动物"对象的构造函数, function Animal(){ this.species = "动物"; } 还有一个"猫"对象的构造函数, function Cat(name,color){ this.name = name; this.color = color; } 怎样才能使"猫&qu

  • JavaScript面向对象编程实现模拟

    目录 前言 1. 构造函数 2. new的过程 2.1 基础使用 2.2 new.target 3. 手动实现一个构造函数 前言 每个对象都是一个功能中心,具有明确分工,可以处理信息,处理信息,发出信息.面向对象编程具有灵活性.可复用性.模块化等好处,适合更多合作完成的大型项目. 1. 构造函数 构造函数的功能是生成对象,生成具有相同结构对象的函数.Java语言通过类实现面向对象,对象是类的实例,而Javascript则是通过构造函数作为对象的模板,使用prototype实现继承. 构造函数的几

  • JavaScript面向对象编程小游戏---贪吃蛇代码实例

    1 面向对象编程思想在程序项目中有着非常明显的优势: 1- 1 代码可读性高.由于继承的存在,即使改变需求,那么维护也只是在局部模块 1-2 维护非常方便并且成本较低. ​2 这个demo是采用了面向对象的编程思想. 用JavaScript 语言编写的游戏小程序--贪吃蛇. ​ 代码注释详细,逻辑清晰 . 非常适合新手前端开发者, 锻炼JavaScript语言的面向对象的编程思想.  该小Demo已上传GitHub,欢迎下载!  觉得好的话,随手给个star,  您的star是我最大的动力! h

随机推荐