javascript面向对象编程实现:
            1.类的声明:
                function test1(){
                    this.p1 = "p1";
                    this.p2 = "p2";
                    this.f1 = function(){ alert("f1"); }
                    this.f2 = function(){ akert("f2"); }
                }
                上面的代码声明了两个公有的属性p1和p2,两个方法f1和f2.
                如何申明私有变量呢?
                function test1(){
                    var _test = "test";
                    this.p1 = "p1";
                    this.p2 = "p2";
                    this.f1 = function(){ alert("f1"); }
                    this.f2 = function(){ akert("f2"); }
                }
                上面的代码通过var关键字声明了一个局部变量_test,其作用域是test1类定义的内部,对外不公开.
                如何申明类的静态变量和静态方法呢?
                test1.staticProp = "static var";
                test1.staticMethod = function(){
                    alert("static method");
                }
                还可以通过javascript中对象的prototype属性来申明类的实例属性或方法:
                test1.prototype.prop2 = "prop2";
                test2.prototype.method2 = function(){
                    alert(" this.prop2");
                }
`               利用prototype属性,可以实现另一种类的声明方法:
                function test(){}
                test.prototype = {
                    p1 : "p1",
                    p2 : "p2",
                    f1 : function(){
                        alert("f1");
                    }
                  }
                
                如何实现类的继承呢?通过复制父类的所有属性和方法来实现子类的继承:
                用for(....in ....)方法来实现遍历父类所有的属性和方法
                这里看看我如何让新声明的test1类继承test类的:
                function test1(){}//定义新声明的test1类.
                var p;                
                for(p in test.prototype){    //遍历父类的所有属性和方法
                    test1.prototype[p] = test.prtotype[p];   //把父类的所有属性和方法全部复制到新声明的子类test1中
                }
                test1.prototype.newMethod = function(){//定义新声明的子类test1的新方法
                    alert("new method");
                }
                其实prototype框架已经帮我们实现了这种继承,我们来看看它是如何实现的:
                Object.extend = function(destination, source){
                    for(property in source){
                        destination[property] = source[property];
                    }
                    return destination;
                 }
                Prototype框架为Object对象定义了extend方法,该方法有两个参数destination和source,分别对应于子类和父类,所以我们前面所讲的test1继承test可以简化代码如下:
                 function test1(){
                    test1.prototype = Object.extend({
                        newMethod : function(){
                            alert("new method");
                        }
                    },
                    test.prototype
                );
            
                如果我们改变一下上述代码中extend方法中的两个参数的顺序:
               function test1(){
                    test1.prototype = Object.extend(
                        test.prototype,
                        {
                        newMethod : function(){
                            alert("new method");
                        }
                    },
                );  
                   可以发现,对于test1子类来说效果是相同的..
                    但是,我们进一步会发现,父类test确拥有了子类test1的新增方法,虽然这不是我们最初想要的继承效果,但是这种方法却使我们有了扩展对象属性或者方法的手段了,不是吗?

转载于:https://www.cnblogs.com/GT_Andy/archive/2010/05/14/1921773.html

javascript面向对象编程实现[定义(静态)属性方法--继承]相关推荐

  1. JavaScript 面向对象编程(二) —— 构造函数 / 原型 / 继承 / ES5 新增方法

    本篇为 JavaScript 进阶 ES6 系列笔记第二篇,将陆续更新后续内容.参考:JavaScript 进阶面向对象 ES6 :ECMAScript 6 入门 : Javascript 继承机制的 ...

  2. Javascript面向对象编程(二) 构造函数的继承

    标注:(转载自:http://www.jb51.net/article/28128.htm) 今天要介绍的是,如何生成一个"继承"多个对象的实例.  比如,现在有一个"动 ...

  3. JavaScript 面向对象编程(三) —— 函数进阶 / 严格模式 / 高阶函数 / 闭包 / 浅拷贝和深拷贝

    本篇为 JavaScript 进阶 ES6 系列笔记第三篇,将陆续更新后续内容.参考:JavaScript 进阶面向对象 ES6 :ECMAScript 6 入门 系列笔记: JavaScript 面 ...

  4. JavaScript 面向对象编程(四) —— 正则表达式

    本篇为 JavaScript 进阶 ES6 系列笔记第四篇,将陆续更新后续内容.参考:JavaScript 进阶面向对象 ES6 : 系列笔记: JavaScript 面向对象编程(一) -- 面向对 ...

  5. JavaScript面向对象编程(2)-- 类的定义

    javascript面向对象编程(2)-- 类的定义 2008-05-29 11:05 by johnson2008, 6196 visits, 收藏, 编辑 最近这一段时间事情太多了,没有时间再继续 ...

  6. Python零基础速成班-第10讲-Python面向对象编程(下),Property属性、特殊方法、设计模式、链表应用

    Python零基础速成班-第10讲-Python面向对象编程(下),Property属性.特殊方法.设计模式.链表应用 学习目标 面向对象编程 接上一讲:Property属性.特殊方法.设计模式 面向 ...

  7. python面向对象编程中方法和属性_Python面向对象编程中关于类和方法的学习笔记...

    Python面向对象编程中关于类和方法的学习笔记 类与类方法是面向对象的编程语言中必不可少的特性,本文总结了Python面向对象编程中关于类和方法的学习笔记,需要的朋友可以参考下 类和实例 pytho ...

  8. 《javascript面向对象编程指南》读书笔记

    <javascript面向对象编程指南>读书笔记 <javascript面向对象编程指南>读书笔记 第一章 面向对象的JavaScript 第二章 基本数据类型与流程控制 变量 ...

  9. JavaScript面向对象编程-第三版不完全系统解读

    JavaScript面向对象编程-第三版不完全系统解读 作者:老九-技术大黍 产品:查看原文 社交:知乎 公众号:老九学堂(新手有福利) 特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系笔者 ...

最新文章

  1. Vim的使用技巧-自动闭合成对符号
  2. POD – Proof of Delivery
  3. 探寻用户自定义定时任务的实践方案
  4. 现代软件工程 - 期末评比及作业要求
  5. radio select的 option使用
  6. cocos+kbe问题记录
  7. linux内核多个补丁,一个令人惊叹的Linux内核补丁
  8. 计算机组成原理 透明性,计算机组成原理试题
  9. c语言令牌桶原理,基于多 goroutine 实现令牌桶
  10. 服务器系统sm总线控制器驱动,sm总线控制器驱动
  11. 数学建模之层次分析法(含MATLAB代码)
  12. centos8修改主机名称
  13. 魔兽世界 圣骑士唯一的远程武器任务
  14. 干货|语义网、Web3.0、Web3、元宇宙这些概念还傻傻分不清楚?(下)
  15. ps知识点2-吸管、修复、画笔、仿章
  16. 内存优化 · 基础论 · 初识 Android 内存优化
  17. C++ Programming language读书笔记
  18. 【3-1】找树根和hai子(STL方法)
  19. 《你有多自律,就有多自由》经典总结
  20. 掌握论文中英文断字处理及段落行号设置

热门文章

  1. JavaScript 与java中数组的区别
  2. Mr.J--验证码登陆模块
  3. Zookeeper-Watcher(事件通知)
  4. 最可怕的八种黑客手段,网络攻击真是无孔不入!【转载】
  5. coroutine - yield from
  6. 复合文档(Compound Document)读写栗子
  7. 【转】Pro Android学习笔记(八):了解Content Provider(下中)
  8. python操作Excel文件
  9. Android 图片异步加载的体会,SoftReference已经不再适用
  10. [ES6] 细化ES6之 -- Promise对象