JavaScript能够实现的面向对象的特征有:
·公有属性(public field)
·公有方法(public Method)
·私有属性(private field)
·私有方法(private field)
·方法重载(method overload)
·构造函数(constructor)
·事件(event)
·单一继承(single inherit)
·子类重写父类的属性或方法(override)
·静态属性或方法(static member)

例子一(JavaScript中允许添加行为的类型):可以在类型上使用proptotype来为类型添加行为。这些行为只能在类型的实例上体现。 JS中允许的类型有Array, Boolean, Date, Enumerator, Error, Function, Number, Object, RegExp, String

Js代码
  1. <script type="text/javascript">
  2. Object.prototype.Property = 1;
  3. Object.prototype.Method = function ()
  4. {
  5. alert(1);
  6. }
  7. var obj = new Object();
  8. alert(obj.Property);
  9. obj.Method();
  10. </script>

例子二(prototype使用的限制):在实例上不能使用prototype,否则发生编译错误

Js代码
  1. <script type="text/javascript">
  2. var obj = new Object();
  3. obj.prototype.Property = 1; //Error
  4. //Error
  5. obj.prototype.Method = function()
  6. {
  7. alert(1);
  8. }
  9. </script>

例子三(如何定义类型上的静态成员):可以为类型定义“静态”的属性和方法,直接在类型上调用即可

Js代码
  1. <script type="text/javascript">
  2. Object.Property = 1;
  3. Object.Method = function()
  4. {
  5. alert(1);
  6. }
  7. alert(Object.Property);
  8. Object.Method();
  9. </script>

例子五():这个例子演示了通常的在JavaScript中定义一个类型的方法

Js代码
  1. <script type="text/javascript">
  2. function Aclass()
  3. {
  4. this.Property = 1;
  5. this.Method = function()
  6. {
  7. alert(1);
  8. }
  9. }
  10. var obj = new Aclass();
  11. alert(obj.Property);
  12. obj.Method();
  13. </script>

例子六(JavaScript中允许添加行为的类型):可以在外部使用prototype为自定义的类型添加属性和方法。

Js代码
  1. <script type="text/javascript">
  2. function Aclass()
  3. {
  4. this.Property = 1;
  5. this.Method = function()
  6. {
  7. alert(1);
  8. }
  9. }
  10. Aclass.prototype.Property2 = 2;
  11. Aclass.prototype.Method2 = function
  12. {
  13. alert(2);
  14. }
  15. var obj = new Aclass();
  16. alert(obj.Property2);
  17. obj.Method2();
  18. </script>

例子八():可以在对象上改变属性。(这个是肯定的)也可以在对象上改变方法。(和普遍的面向对象的概念不同)

Js代码
  1. <script type="text/javascript">
  2. function Aclass()
  3. {
  4. this.Property = 1;
  5. this.Method = function()
  6. {
  7. alert(1);
  8. }
  9. }
  10. var obj = new Aclass();
  11. obj.Property = 2;
  12. obj.Method = function()
  13. {
  14. alert(2);
  15. }
  16. alert(obj.Property);
  17. obj.Method();
  18. </script>

例子九():可以在对象上增加属性或方法

Js代码
  1. <script type="text/javascript">
  2. function Aclass()
  3. {
  4. this.Property = 1;
  5. this.Method = function()
  6. {
  7. alert(1);
  8. }
  9. }
  10. var obj = new Aclass();
  11. obj.Property3 = 3;
  12. obj.Method3 = function()
  13. {
  14. alert(3);
  15. }
  16. alert(obj.Property3);
  17. obj.Method3();
  18. </script>

例子十(如何让一个类型继承于另一个类型):这个例子说明了一个类型如何从另一个类型继承。

Js代码
  1. <script type="text/javascript">
  2. function AClass()
  3. {
  4. this.Property = 1;
  5. this.Method = function()
  6. {
  7. alert(1);
  8. }
  9. }
  10. function AClass2()
  11. {
  12. this.Property2 = 2;
  13. this.Method2 = function()
  14. {
  15. alert(2);
  16. }
  17. }
  18. AClass2.prototype = new AClass();
  19. var obj = new AClass2();
  20. alert(obj.Property);
  21. obj.Method();
  22. alert(obj.Property2);
  23. obj.Method2();
  24. </script>

例子十一(如何在子类中重新定义父类的成员):这个例子说明了子类如何重写父类的属性或方法。

Js代码
  1. <script type="text/javascript">
  2. function AClass()
  3. {
  4. this.Property = 1;
  5. this.Method = function()
  6. {
  7. alert(1);
  8. }
  9. }
  10. function AClass2()
  11. {
  12. this.Property2 = 2;
  13. this.Method2 = function()
  14. {
  15. alert(2);
  16. }
  17. }
  18. AClass2.prototype = new AClass();
  19. AClass2.prototype.Property = 3;
  20. AClass2.prototype.Method = function()
  21. {
  22. alert(4);
  23. }
  24. var obj = new AClass2();
  25. alert(obj.Property);
  26. obj.Method();
  27. </script>

js中prototype用法(转)的更多相关文章

  1. js中prototype,constructor的理解

    连看4篇前辈的文章,记录一些知识点 Javascript继承机制的设计思想 Javascript 面向对象编程(一):封装 Javascript面向对象编程(二):构造函数的继承 Javascript ...

  2. json,js中typeof用法详细介绍及NaN、 null 及 undefined 的区别

    JSON.parse(jsonstr); //可以将json字符串转换成json对象 JSON.stringify(jsonobj); //可以将json对象转换成json对符串 在js使用中的一个函 ...

  3. Js中Prototype、__proto__、Constructor、Object、Function关系介绍

    一. Prototype.__proto__与Object.Function关系介绍 Function.Object:都是Js自带的函数对象.prototype,每一个函数对象都有一个显式的proto ...

  4. js中replace用法

    js中replace的用法 replace方法的语法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正则 ...

  5. Bom和Dom编程以及js中prototype的详解

    一.Bom编程: 1.事件练习: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...

  6. 【转】Js中Prototype、__proto__、Constructor、Object、Function关系介绍

    一    Prototype.__proto__与Object.Function关系介绍        Function.Object:Js自带的函数对象.         prototype,每一个 ...

  7. JS中prototype,js原型扩展

    作者:轩脉刃(yjf512)出处:(http://www.cnblogs.com/yjf512/)版权声明:本文的版权归作者与博客园共有.欢迎转载阅读,转载时须注明本文的详细链接. 原文 http:/ ...

  8. js中prototype与__proto__区别

    proto(隐式原型)与prototype(显式原型) 显式原型 explicit prototype property:每一个函数在创建之后都会拥有一个名为prototype的属性,这个属性指向函数 ...

  9. js中prototype和constructor的认识

    最初对js中 object.constructor 的认识: 我们都知道,在JS中有一个function的东西.一般人们叫它函数.比如下面的代码 function Person(name)    {  ...

随机推荐

  1. Flex发行2048游戏

    近来的2048像挺火的游戏.在公交车,吃.甚至还有人走在路上拿着手机在玩.之前我看我的同事们戏,我认为这是很天真,中移动太无聊了吧 到后面,他是在,我觉得真的很无聊,这时候,无聊的时候无聊,后来我想用 ...

  2. POJ 3422 Kaka&#39;s Matrix Travels(费用流)

    POJ 3422 Kaka's Matrix Travels 题目链接 题意:一个矩阵.从左上角往右下角走k趟,每次走过数字就变成0,而且获得这个数字,要求走完之后,所获得数字之和最大 思路:有点类似 ...

  3. HTML基本介绍

    html 即 超文本标记语言 ,即标准通用标记语言下的一个应用. "超文本"就是指页面内能够包括图片.链接.甚至音乐.程序等非文字元素.超文本标记语言的结构包括"头&qu ...

  4. 假设synthesize省略,语义属性声明assign retain copy时间,为了实现自己的setter和getter方法

    假设synthesize省略,而且我们自己实现setter和getter方法时,系统就不会生成相应的setter和getter方法,还有实例变量 1,当把语义特性声明为assign时,setter和g ...

  5. 认识mongoDB数据库

    mongodb中有三元素:数据库,集合,文档,其中“集合”对应关系型数据库中的“表”,“文档”对应“行”. 安装mongoDB: 去官网下载对应系统的mongoDB压缩包,解压后将文件夹重命名为mon ...

  6. Android Framework 其中A记录

    一个简短的引论 以往的研究太偏应用层的功能,实现了,原则上不进入非常理解,现在,研究人员framework该框架层. 创纪录的 1.下载源代码,文件夹例如以下: 2.Android系统的层次例如以下: ...

  7. MySQLHA系列MHA(一)

    MHA,这是Master High Availability Manager and Tools for MySQL,一个日本MySQL专家们使用Perl语言编写的一个脚本管理工具.该工具仅适用于My ...

  8. bzoj 3333: 排队计划 解决问题的方法

    [原标题] 3333: 排队计划 Time Limit: 20 Sec  Memory Limit: 128 MB Submit: 161  Solved: 71 [Submit][Status] D ...

  9. 无法使用Django新建项目:&#39;django-admin.py&#39;不是内部或外部命令

    问题: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbXlhdGxhbnRpcw==/font/5a6L5L2T/fontsize/400/fill/I0 ...

  10. 简单介绍如何使用PowerMock和Mockito来mock 1. 构造函数 2. 静态函数 3. 枚举实现的单例 4. 选择参数值做为函数的返回值(转)

    本文将简单介绍如何使用PowerMock和Mockito来mock1. 构造函数2. 静态函数3. 枚举实现的单例4. 选择参数值做为函数的返回值5. 在调用mock出来的方法中,改变方法参数的值 一 ...