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面向对象编程(二):构造函数的继承 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继 ...
随机推荐
- java核心技术-多线程之线程基础
说起线程,无法免俗首先要弄清楚的三个概念就是:进程.线程.协程.OK,那什么是进程,什么是线程,哪协程又是啥东西.进程:进程可以简单的理解为运行在操作系统中的程序,程序时静态代码,进程是动态运行着的代 ...
- GoLand(一)安装
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.安装包下载地址https://golang.org/ 二.Windows下安装:1.下载好.msi的安装包文件 ...
- 20155211 课下测试ch11补做
20155211 课下测试ch11补做 Web服务器的实现基于HTTP协议,有关HTTP协议,下面说法正确的是() A.可以用telnet充当Web服务器的客户端进行调试 B.HTTP请求的GET和P ...
- 20155213 《网络攻防》 Exp1 PC平台逆向破解
20155213 <网络攻防> Exp1 PC平台逆向破解(5)M 实践内容 通过对实践对象--pwn20155213的linux可执行文件的修改或输入,完成以下三块: 手工修改可执行文件 ...
- [2016北京集训试题14]股神小D-[LCT]
Description Solution 将(u,v,l,r)换为(1,u,v,l)和(2,u,v,r).进行排序(第4个数为第一关键字,第1个数为第二关键字).用LCT维护联通块的合并和断开.(维护 ...
- 【译】2017年要学习的三个CSS新特性
这是翻译的一篇文章,原文是:3 New CSS Features to Learn in 2017,翻译的不是很好,如有疑问欢迎指出. 新的一年,我们有一系列新的东西要学习.尽管CSS有很多新的特性, ...
- TCP Over HTTP 的Buffer问题
记录下备忘. 场景:要把TCP拆成一个个HTTP请求,通过Proxy 1.HTTP Client上载数据到CCProxy ,然后再到Web服务器的时候. 如果数据量比较小,例如10个字节,Proxy就 ...
- linux 利用cat写入一段文件
linux 利用cat写入一段文件 cat >> /etc/rc.local <<EOFsysctl -w net.ipv4.icmp_echo_ignore_all=1sys ...
- int str input的运用
- python类与对象的内置函数大全(BIF)
关于类与对象的一些常用BIF(内置函数) 1.issubclass(class,classinfo) 含义:如果class是classinfo的子类,则返回True,否则返回false,用来判断子类关 ...