Javascript面向对象二
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面向对象二的更多相关文章
- JavaScript 面向对象(二) —— 案例篇
看案例前可以先看看基础篇:JavaScript 面向对象(一) —— 基础篇 案例——面向对象的选项卡:把面向过程的程序一步步改成面向对象的形式,使其能够更加的通用(但是通用的东西,一般会比较臃肿). ...
- JavaScript面向对象(二)——成员属性、静态属性、原型属性与JS原型链
前 言 JRedu 上一篇博客中,我们介绍了JS中的面向对象,并详细的解释了this的指向问题.本篇博客,我们继续来学习JS的面向对象.来深入理解一下JavaScript OOP中的成员属性/方 ...
- javascript面向对象(二):构造函数的继承
本文来自阮一峰 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继承"的五种方法. 比如,现在有 ...
- JavaScript 面向对象(三) —— 高级篇
JavaScript 面向对象(一) —— 基础篇 JavaScript 面向对象(二) —— 案例篇 一.json方式的面向对象 首先要知道,js中出现的东西都能够放到json中.关于json数据格 ...
- JavaScript 面向对象(一) —— 基础篇
学好JS的面向对象,能很大程度上提高代码的重用率,像jQuery,easyui等,这篇博客主要从细节上一步步讲JS中如何有效地创建对象,也可以看到常见的创建对象的方式,最后也会附上一些JS面向对象的案 ...
- 《JavaScript面向对象编程指南(第2版)》读书笔记(二)
<JavaScript面向对象编程指南(第2版)>读书笔记(一) <JavaScript面向对象编程指南(第2版)>读书笔记(二) 目录 一.基本类型 1.1 字符串 1.2 ...
- (二)Javascript面向对象编程:构造函数的继承
Javascript面向对象编程:构造函数的继承 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继承 ...
- Javascript面向对象编程(二):构造函数的继承 作者:yuan一峰
Javascript面向对象编程(二):构造函数的继承 作者: 阮一峰 日期: 2010年5月23日 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生 ...
- JavaScript 面向对象编程(二):继承
Javascript面向对象编程(二):构造函数的继承 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继 ...
随机推荐
- oracle 数据库更新 新增 修改 删除
数据增加 INSERT INTO 表名称 [(字段,字段,...)] VALUES (值,值,...) ; 考虑到日后代码的可维护性,一定要使用完整的语法进行数据的增加. 数据修改 UPDATE 表名 ...
- # 2017-2018-1 20155302 课下实践IPC及课上补充
课上实践补交 题目二要求: 学习使用stat(1),并用C语言实现 提交学习stat(1)的截图 man -k ,grep -r的使用 伪代码 产品代码 mystate.c,提交码云链接 测试代码,m ...
- 20155327 2017-2018-2 《Java程序设计》第9周学习总结
20155327 2017-2018-2 <Java程序设计>第9周学习总结 URL类 URL类是java.net包中的一个重要的类,URL的实例封装着一个统一资源定位符,使用URL创建对 ...
- Kubernetes学习之路(十四)之服务发现Service
一.Service的概念 运行在Pod中的应用是向客户端提供服务的守护进程,比如,nginx.tomcat.etcd等等,它们都是受控于控制器的资源对象,存在生命周期,我们知道Pod资源对象在自愿或非 ...
- ASP.NET Core开发期间部署到IIS自定义主机域名并附加到进程调试
在.NET Framework环境下,我们经常会这么做 把一个web项目不经过发布直接部署到IIS里去,配置上主机名,修改一下hosts文件,就可以用自定义的域名来访问我们的应用程序,使用附加到进程( ...
- CSS快速入门-后端布局
一.后台框架概述 我们在网上随便搜索后台框架,你会发现大部分都查不多.正所谓:好看的皮囊千篇一律,有趣的灵魂万里挑一. 第一个是H-ui,H-ui.admin是用H-ui前端框架开发的轻量级网站后台模 ...
- Intellij IDEA《十分钟,配置struts2》by me
1.加载Struts 2类库 <dependencies> <!-- Struts 2 核心包--> <dependency> <groupId>org ...
- 淡雅清新教师求职简历免费word模板
12款精美淡雅清新教师求职简历免费word模板,也可用于其他专业和职业,个人免费简历模板,个人简历表免费,个人简历表格. 声明:该简历模板仅用于个人欣赏使用,请勿用于商业用途,谢谢. 下载地址:百度网 ...
- 一个IT男的表白
致BCD6 CEC0 C3F4 转一轮肩胛骨 倒一杯铁观音 白驹过隙,倏忽两秋 远方有希望和梦想 有火车.微信美颜视频聊天和碧根果 有你的支持 如果身旁没有你 生活无趣失去动力 就像python失去类 ...
- leetcode-填充同一层的兄弟节点Ⅱ
给定一个二叉树 struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; } 填充它的每个 ...