Javascript面向对象二

可以通过指定原型属性来对所有的对象指定属性,

Object.prototype.name="zhangsan";

Object.prototype.getType=function(){

var a=typeof(this);

alert(a);

}

var o=new Object();

var o2={};

var d=new Date();

o.getType();

o2.getType();

d.getType();

alert(o.name);

alert(o2.name);

alert(d.name);

//继承

Javascript中没有extends 关键字

但是可以通过类的prototype实现继承

function Person(){

}

Person.prototype={

name:"张三",

show:function(){

alert(this.name);

}

}

function Child(){

}

Child.prototype=Person.prototype;

var c=new Child();

c.show();

当改变Child的原型的show方法的时候,

Person对象的show也就改变了。

Child.prototype.show=function(){

alert("这个方法已经改变了");

}

var p=new Person();

p.show();//提示为这个方法已经改变

为了在改变Child的属性的时候 不改变Person的属性 我们可以通过 for in 和prototype属性来完成继承

function Person(){}

Person.prototype={

name:"zhangsan",

show:function(){

alert(this.name);

}

}

function Child(){}

var c=new Child();

for(var p in Person.prototype){

Child.prototype[p]=Person.prototype[p];

}

Child.prototype.show=function(){

alert("方法已经改变");

}

var p1=new Person();

c.show();//方法已经改变

p1.show();//zhangsan

可以为每一个对象指定一个特有的方法来实现继承

Function.prototype.extend=function(source){

for(var p in source.prototype){

this.prototype[p]=source.prototype[p];

}

}

function Person(){}

Person.prototype={

name:"zhangsan",

show:function(){

alert(this.name);

}

}

function Child(){}

Child.extend(Person);

var c=new Child();

//        for(var p in Person.prototype){

//            Child.prototype[p]=Person.prototype[p];

//        }

Child.prototype.show=function(){

alert("方法已经改变");

}

var p1=new Person();

c.show();//方法已经改变

p1.show();//zhangsan

共有成员、私有成员和静态成员

Javascript并没有专门的机制来处理这些便量

想Java中我们通常定义类的时候会这么写

* public class Person{

*          private String name;

*         public void setName(String name){

*             this.name=name;

*         }

*         public String getName(){

*             return this.name;

*         }

* }

而Javascript中我们得这么写

function Person(){

var name;//私有的成员

this.setName=function(nm){

this.name=nm;

}

this.getName=function(){

return name;

}

}

我们可以这么使用了

Var p=new person();

p.setnema("zhangsan");

p.getname();

javascript中定义静态成员和方法

person.staticName="这是一个人";

person.staticMothod=function(){

alert(person.staticNamse);

}

静态的属性和方法可以直接通过类名直接调用

Person.staticMothod();

注意:一个类的实例不能调用这个类的静态方法

Javascript面向对象二的更多相关文章

  1. JavaScript 面向对象(二) —— 案例篇

    看案例前可以先看看基础篇:JavaScript 面向对象(一) —— 基础篇 案例——面向对象的选项卡:把面向过程的程序一步步改成面向对象的形式,使其能够更加的通用(但是通用的东西,一般会比较臃肿). ...

  2. JavaScript面向对象(二)——成员属性、静态属性、原型属性与JS原型链

      前  言 JRedu 上一篇博客中,我们介绍了JS中的面向对象,并详细的解释了this的指向问题.本篇博客,我们继续来学习JS的面向对象.来深入理解一下JavaScript OOP中的成员属性/方 ...

  3. javascript面向对象(二):构造函数的继承

    本文来自阮一峰 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继承"的五种方法. 比如,现在有 ...

  4. JavaScript 面向对象(三) —— 高级篇

    JavaScript 面向对象(一) —— 基础篇 JavaScript 面向对象(二) —— 案例篇 一.json方式的面向对象 首先要知道,js中出现的东西都能够放到json中.关于json数据格 ...

  5. JavaScript 面向对象(一) —— 基础篇

    学好JS的面向对象,能很大程度上提高代码的重用率,像jQuery,easyui等,这篇博客主要从细节上一步步讲JS中如何有效地创建对象,也可以看到常见的创建对象的方式,最后也会附上一些JS面向对象的案 ...

  6. 《JavaScript面向对象编程指南(第2版)》读书笔记(二)

    <JavaScript面向对象编程指南(第2版)>读书笔记(一) <JavaScript面向对象编程指南(第2版)>读书笔记(二) 目录 一.基本类型 1.1 字符串 1.2 ...

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

    Javascript面向对象编程:构造函数的继承   这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继承 ...

  8. Javascript面向对象编程(二):构造函数的继承 作者:yuan一峰

    Javascript面向对象编程(二):构造函数的继承   作者: 阮一峰 日期: 2010年5月23日 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生 ...

  9. JavaScript 面向对象编程(二):继承

    Javascript面向对象编程(二):构造函数的继承 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继 ...

随机推荐

  1. Mac配置虚拟主机

    一.启动Apache 终端输入:sudo apachectl start Apache的安装目录在:/etc/apache2/,etc默认是隐藏的.有三种方式查看: 1.桌面位于Finder时:shi ...

  2. 2018-11-26 BIG DATA ANALYSIS

  3. C 语言数组越界导致死循环问题

    今天朋友问我一道 C 语言的题目,如下图: 看到这题一开始也比较纳闷,arr[10] 不是越界了吗?怎么会死循环?怎么 arr[10] 就是 m?这是什么意思? 我们先来看一个简单的例子: ]; ; ...

  4. mysql是否区分大小写

    1.是否区分 库名.表名.列名.别名 的大小写? ------------------------------------------------------------------ [ Linux] ...

  5. Silverlight 图表控件 Visifire 常用属性

    主要介绍 Visifire 常用属性的设置,用来生成不同样式的图例 设置Chart的属 //设置title的值 // 创建一个标题的对象 Title title = new Title(); // 设 ...

  6. [arc072F]Dam-[单调队列]

    Description 传送门 Solution 首先我们肯定不能那么耿直地直接把水混合起来吧..不然分分钟完球. 那么怎么找到最优解呢?假如我们把水的体积和温度按顺序插入队列,这时我们插入第i天的水 ...

  7. 2_C语言中的数据类型 (一)2.1.常量和字符串常量

    2.1 常量就是在程序中不可变化的量,常量在定义的时候必须给一个初值. 1.1.1          #define 定义一个宏常量 1.1.2          const 定义一个const常量 ...

  8. Storm 第一章 核心组件及编程模型

    1 流式计算 流式计算:数据实时产生.实时传输.实时计算.实时展示 代表技术:Flume实时获取数据.Kafka/metaq实时数据存储.Storm/JStorm实时数据计算.Redis实时结果缓存. ...

  9. c# ajax从后台获取数据list数组 $.each再显示数据

    后台代码 public JsonResult linkage(string Department) {//逻辑是:先从数据库查到表数据 再把表数据转换为LIST给AJAX HE_Department ...

  10. Permission Policies

    The Permission Policy determines Security System behavior when there are no explicitly specified per ...