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();

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

转载于:https://www.cnblogs.com/chengzhipcx/p/4497652.html

Javascript面向对象二相关推荐

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

    案例--面向对象的选项卡:把面向过程的程序一步步改成面向对象的形式,使其能够更加的通用(但是通用的东西,一般会比较臃肿). 下面是一个简单的选项卡,也是我们常见的面向过程的创建形式. 1 <!D ...

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

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

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

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

  4. JavaScript 面向对象(二)——案列篇

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

  5. 用JSON和Javscript的prototype来构建完善的Javascript面向对象表示法

    [原文地址:http://www.cnblogs.com/robinhood/archive/2006/11/16/515412.html] 上次发贴没能很好的总结Javascrip编写类的方法,这次 ...

  6. javascript 面向对象编程(工厂模式、构造函数模式、原型模式)

    javascript 面向对象编程(工厂模式.构造函数模式.原型模式) CreateTime--2018年3月29日17:09:38 Author:Marydon 一.工厂模式 /*** 工厂模式*/ ...

  7. Javascript 面向对象全新理练之数据的封装

    JavaScript 是一种非常灵活的面向对象程序设计语言,它与传统的强类型的面向对象程序设计语言(如 C++,Java,C# 等)有很大不同,所以要实现如 C++.java.C# 当中的一些特性就需 ...

  8. JavaScript面向对象编程深入分析

    JavaScript面向对象编程深入分析 一. Javascript 面向对象编程:封装 Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又 ...

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

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

最新文章

  1. python基于Django框架编译报错“django.core.exceptions.ImproperlyConfigured”的解决办法?...
  2. 考前自学系列·计算机组成原理·中央处理器知识点
  3. Java IO流之转换流
  4. VTK:细胞中心演示用法实战
  5. C和指针之多维数组一行存满后会轮到下一行
  6. HTML如何添加锚点,论程序员成长的正确姿势
  7. 捡起JavaScript(1)
  8. 监督学习 | SVM 之非线性支持向量机原理
  9. 每日总结app_每日复盘不会写,怎么办?送你一份每日复盘总结模板
  10. python牛顿迭代法_Jacobi迭代算法的Python实现详解
  11. openLayer加载KML,画出省及省下的边界区域,并设置样式、各种标注及提示信息
  12. 正确学习PLC编程的方法
  13. 图像3尺度全小波包分解matlab,小波包分解
  14. 时间片轮转调度算法模拟(Linux-C语言)
  15. HTC T328W刷机包 仿三星S5 UI美化 精简 S5下拉
  16. HTML和CSS(7.17-7.20)
  17. 网站应用和服务器管理(课程总结4)Week12 澳大利亚维多利亚大学VIT1204 Web Application and Server Management
  18. 西游记不单单讲的是故事(1) ------ 摘自 吴闲云的《煮酒探西游》
  19. 短视频搬运神器,二次剪辑神器,涨粉热门必备软件,黑科技----效果杠杠的
  20. web大作业介绍自己的家乡_【天成好作文】胡缤云 二十年后的家乡

热门文章

  1. 「知识点」JavaScript 中11个有趣的事实
  2. python 7-24 sdut-array2-2-局部峰值 (10 分)
  3. 水泵怎么做_燃气壁挂炉初次调试,要怎么做才好?
  4. 安装oracle的口令是,Oracle中口令设置、用户解锁、卸载等问题
  5. mysql一张表可以用吗_MySQL表操作
  6. 计算机基础知识判断题答案,计算机基础知识试题及答案判断题模板.docx
  7. django 给单个文件加log_django配置日志模块
  8. mysql写php木马_PHP一句话木马小总结与SQL语句写一句话木马
  9. 谷歌大神Jeff Dean领衔,万字展望5大AI趋势
  10. html颜色对话框,网页颜色对话框的使用