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. oracle 数据库更新 新增 修改 删除

    数据增加 INSERT INTO 表名称 [(字段,字段,...)] VALUES (值,值,...) ; 考虑到日后代码的可维护性,一定要使用完整的语法进行数据的增加. 数据修改 UPDATE 表名 ...

  2. # 2017-2018-1 20155302 课下实践IPC及课上补充

    课上实践补交 题目二要求: 学习使用stat(1),并用C语言实现 提交学习stat(1)的截图 man -k ,grep -r的使用 伪代码 产品代码 mystate.c,提交码云链接 测试代码,m ...

  3. 20155327 2017-2018-2 《Java程序设计》第9周学习总结

    20155327 2017-2018-2 <Java程序设计>第9周学习总结 URL类 URL类是java.net包中的一个重要的类,URL的实例封装着一个统一资源定位符,使用URL创建对 ...

  4. Kubernetes学习之路(十四)之服务发现Service

    一.Service的概念 运行在Pod中的应用是向客户端提供服务的守护进程,比如,nginx.tomcat.etcd等等,它们都是受控于控制器的资源对象,存在生命周期,我们知道Pod资源对象在自愿或非 ...

  5. ASP.NET Core开发期间部署到IIS自定义主机域名并附加到进程调试

    在.NET Framework环境下,我们经常会这么做 把一个web项目不经过发布直接部署到IIS里去,配置上主机名,修改一下hosts文件,就可以用自定义的域名来访问我们的应用程序,使用附加到进程( ...

  6. CSS快速入门-后端布局

    一.后台框架概述 我们在网上随便搜索后台框架,你会发现大部分都查不多.正所谓:好看的皮囊千篇一律,有趣的灵魂万里挑一. 第一个是H-ui,H-ui.admin是用H-ui前端框架开发的轻量级网站后台模 ...

  7. Intellij IDEA《十分钟,配置struts2》by me

    1.加载Struts 2类库 <dependencies> <!-- Struts 2 核心包--> <dependency> <groupId>org ...

  8. 淡雅清新教师求职简历免费word模板

    12款精美淡雅清新教师求职简历免费word模板,也可用于其他专业和职业,个人免费简历模板,个人简历表免费,个人简历表格. 声明:该简历模板仅用于个人欣赏使用,请勿用于商业用途,谢谢. 下载地址:百度网 ...

  9. 一个IT男的表白

    致BCD6 CEC0 C3F4 转一轮肩胛骨 倒一杯铁观音 白驹过隙,倏忽两秋 远方有希望和梦想 有火车.微信美颜视频聊天和碧根果 有你的支持 如果身旁没有你 生活无趣失去动力 就像python失去类 ...

  10. leetcode-填充同一层的兄弟节点Ⅱ

    给定一个二叉树 struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; } 填充它的每个 ...