javascript基于prototype实现类似OOP继承的方法
本文实例讲述了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程序设计有所帮助。
相关推荐
-
JavaScript OOP面向对象介绍
OOP 语言使我们有能力自定义对象和变量类型. 面向对象编程 JavaScript 是面向对象的编程语言 (OOP).OOP 语言使我们有能力定义自己的对象和变量类型.对象拥有属性和方法. 属性 属性指与对象有关的值. 举例: 复制代码 代码如下: <script type="text/javascript"> var txt="Hello World!" document.write(txt.length) //使用字符串对象的长度属性来计算字符串中的
-
javascript延时重复执行函数 lLoopRun.js
function lLoopRun(sFuncLoop,sFuncEnd,nDelay) { //writen by http://fengyan.iecn.cn //sFuncLoop >> 字符串型,需要重复执行的Javascript函数或语句(多个函数或语句请用;分隔) //sFuncEnd >> 字符串型,用于中止重复执行动作(sFuncLoop)的Javascript函数或语句 //nDelay >> 数字型,重复执行的时间间隔(毫秒数) var vinter
-
JavaScript OOP类与继承
类:分为公开的和私有的 复制代码 代码如下: function Person(n){ var name=n; //私有属性 function hello(){} //私有方法一 var hello2() = function(){} //私有方法二 this.Name = "张三"; //公开成员一 this.Hello = function(){ //公开方法一 this.Name; //公开方法中可以调用私有方法与属性 name; } } Person.prototype.Age=
-
玩转JavaScript OOP - 类的实现详解
概述 当我们在谈论面向对象编程时,我们在谈论什么? 我们首先谈论的是一些概念:对象.类.封装.继承.多态. 对象和类是面向对象的基础,封装.继承和多态是面向对象编程的三大特性. JavaScript提供了对象却缺乏类,它不能像C#一样能显式地定义一个类. 但是JavaScript的函数功能非常灵活,其中之一就是构造函数,结合构造函数和原型对象可以实现"类". 对象和类的概念 对象 "对象"是面向对象编程中非常重要的一个概念,一个对象是一个"东西"
-
JS OOP包机制,类创建的方法定义
复制代码 代码如下: /** * 定义包 * @param {} ns * @return {} */ Xu.pkg = function(ns) { if (!ns || !ns.length) { return null; } var levels = ns.split("."); var nsobj = Xu; for (var i = (levels[0] == "Xu") ? 1 : 0; i < levels.length; ++i) { nsob
-
Javascript OOP之面向对象
面向对象程序设计(Object-oriented programming,OOP)是一种程序设计范型,同时也是一种程序开发的方法.对象指的是类的实例.它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性.灵活性和扩展性.--维基百科 一般面向对象包含:继承,封装,多态,抽象 对象形式的继承 浅拷贝 var Person = { name: 'allin', age: 18, address: { home: 'home', office: 'office', } sclools:
-
Node.js事件循环(Event Loop)和线程池详解
Node的"事件循环"(Event Loop)是它能够处理大并发.高吞吐量的核心.这是最神奇的地方,据此Node.js基本上可以理解成"单线程",同时还允许在后台处理任意的操作.这篇文章将阐明事件循环是如何工作的,你也可以感受到它的神奇. 事件驱动编程 理解事件循环,首先要理解事件驱动编程(Event Driven Programming).它出现在1960年.如今,事件驱动编程在UI编程中大量使用.JavaScript的一个主要用途是与DOM交互,所以使用基于事件
-
Nodejs全栈框架StrongLoop推荐
StrongLoop是一个基于Nodejs的强大框架,几乎包含了移动开发全栈所需要的所有功能.2013年成立,很少的员工,一个技术驱动,执行力强大的团队.也是在13年我开始接触StrongLoop,当时是为了做nodejs方面的技术选型,看了许多框架,LoopBack是我觉得最酷的一个.我还记得当时是觉得LoopBack的文档太差(主要是跟在线的版本不一样),不知道能活多久所以才放弃了它.时隔一年回来看到这个绿油油的框架,这一年可真是突飞猛进呢. 全栈框架StrongLoop StrongLoo
-
javascript oop开发滑动(slide)菜单控件
这里使用原生的javascript,用面向对象的方式创建一个容易维护使用方便的滑动菜单,调用方式如下: 复制代码 代码如下: var $sliding = document.getElementById("silding"); var s1 = new Sliding(); s1.commands = $sliding.getElementsByTagName("dt"); s1.panels = $sliding.getElementsByTagName(&quo
-
JavaScript运行机制之事件循环(Event Loop)详解
一.为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事.那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊. JavaScript的单线程,与它的用途有关.作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM.这决定了它只能是单线程,否则会带来很复杂的同步问题.比如,假定JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线
-
Javascript oop设计模式 面向对象编程简单实例介绍
Javascript oop设计模式 面向对象编程 最初我们写js代码的时候是这么写 function checkName(){ //验证姓名 } function checkEmail(){ //验证邮箱 } function checkPassword(){ //验证密码 } 这种方式会造成全局变量的严重污染,再过渡到 var checkObject = { checkName : function(){}; checkEmail: function(){}; checkPassword:
-
javascript 原型模式实现OOP的再研究
复制代码 代码如下: 复制代码 代码如下: function A() { this.v1 = 10; } A.prototype.print = function() { alert(this.v1); } function B() { } B.prototype = new A(); new B().print(); 运行这段代码输出是10,看起来好像是类B继承了类A的方法print,并产生了正确的输出,实际上的执行流程是在类B生成的对象中,不能直接得到方法print,于是在它的prototy
-
延时重复执行函数 lLoopRun.js
公司的一个项目中,有许多地方需要延时执行一些可重复性的函数(动作),就写了下面这段函数. 呵呵,不知道取什么意思更为确切些,就定为了:LoopRun,意为"重复执行" function lLoopRun(sFuncLoop,sFuncEnd,nDelay) { var vintervalId = null; var runString = sFuncLoop; var stopString = sFuncEnd; var delayTime = nDelay;
随机推荐
- PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
- Asp.Net 网站性能优化之缓字决 (上) 缓冲写数据
- Unicode编码大揭秘
- Java编程实现生成给定范围内不重复随机数的方法小结
- 解析Linux系统中JVM内存2GB上限的详解
- 纯js+html和纯css+html制作手风琴效果
- PHP setcookie() cannot modify header information 的解决方法
- 在Javascript中处理数组之toSource()方法的使用
- MySQL内存及虚拟内存优化设置参数
- JQuery实现定时刷新功能代码
- JavaScript 变量作用域及闭包第1/2页
- JS正则表达式基本用法(经典全)
- 如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
- 使用php从身份证号中获取一系列线索(星座、生肖、生日等)
- 管理与维护宽带路由器的注意事项
- node.js多个异步过程中判断执行是否完成的解决方案
- 带你入门Linux中size命令的6个例子
- Python 比较文本相似性的方法(difflib,Levenshtein)
- Python配置虚拟环境图文步骤
- Django集成CAS单点登录的方法示例
