javascript创建自定义对象和prototype
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>javascript自定义对象</title>
<script type="text/javascript" language="javascript" src="my.js"></script>
</head> <body>
<script type="text/javascript" language="javascript">
//写构造函数----------------------------------------- //1.写构造函数
function Person(){ }
//2创建对象
var p=new Person();
//3绑定属性
p.name="张三";
p.age=23; //4绑定函数
p.say=sayHi; //5调用
p.say(); document.write(p+"<br/>");
document.write( p.name+"<br/>"); function sayHi(){
document.write( "hello hi <br/>" );
}
</script>
<script type="text/javascript" language="javascript">
//写构造函数的另一种形式-----------------------------------------
//1创建构造函数
function Shape(x,y){
this.x=x;//this 代表当前对象
this.y=y;
this.say=function(){
document.write("这个是一个函数<br/>");
}
} //创建对象
var shape=new Shape(12,34); //调用
document.write( shape +"<br/>");
document.write(shape.x+"<br/>");
shape.say(); //动态修改属性
delete shape.x;//删除对象的x属性
shape.say=null;//直接删除该方法
shape.say=function (){
document.write("重写前面的方法!<br/>");
}
document.write( shape.x+"<br/>");//undefined 没有找到该属性
shape.say();//这里会报错 </script>
<script type="text/javascript" language="javascript">
//Object 形式的-----------------------------------------
document.write( Math.constructor +"<br/>");
var p=new Object();//这里的new关键字可以不要var p= Object();
p.name="jack";
p.gender="male";
p.eat=function(){
document.write(this.name+"<br/>"+"eat..............");
}
document.write(p.name+" : " +p.gender+"<br/>");
p.eat(); </script>
<script type="text/javascript" language="javascript">
//字面值形式-------------------------------------
var person={
name:"张三",
age:14,
sleep:function(){
document.write(this.name+"sleep。。。。。。。。。。。。<br/>");
},
}; document.write( person.name+":这个是一个名字"+person.age+"<br/>");
person.sleep(); </script>
</body>
</html>
<!-----------
javascript中内置的对象有限,不能满足所有项目开发的要求,所以javascript就提供了开发者自定义对象的功能 创建自定义对象的几种方式:
1.构造函数
1.1写构造函数
1.2创建对象
1.3属性绑定
1.4函数绑定 缺点:没创建一个对象都要写一个构造函数 2.Object
所有的对象都是Object
2.1直接使用javascript语言中默认的Object构造函数创建对象
2.2绑定属性
2.3绑定函数 特点:new关键字可以不要 3.字面值
无需使用任何的构造函数,直接使用{}代表一个对象。在{}中可以指定属性和函数 -------->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>javascript中的方法prototype和call</title>
</head> <body>
<script type="text/javascript" language="javascript">
//prototype ----------------------------------------
function Person(name){
//对象方法
this.name=name;
this.Introduce=function(){
alert("my name is "+this.name);
}
}
//类方法
Person.Run=function(){
alert(" i can run");
}
Person.prototype.IntrodeceChinese=function(){
alert("我的名字是:"+this.name);
} //测试 var p=new Person("张三");
p.Introduce();
Person.Run();
p.IntrodeceChinese(); </script>
<script type="text/javascript" language="javascript">
//javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用。 //可以出现这种情况:A的prototype是B的实例,同时B的prototype也是A的实例。 function baseClass(){
this.showMsg=function(){
alert("baseClass::showMsg");
}
} function extendsClass(){
} extendsClass.prototype=new baseClass();
var instance=new extendsClass(); instance.showMsg();
</script>
<script type="text/javascript" language="javascript">
function baseClass(){
this.showMsg=function(){
alert("baseClass::showMsg");
}
} function extendsClass(){
//假如本身也有一个showMsg方法,函数运行时会先去本体的函数中去找,如果找到则运行,找不到则去prototype中寻找函数。或者可以理解为prototype不会克隆同名函数。
this.showMsg=function(){
alert("extendsClass:showMsg");
}
} extendsClass.prototype=new baseClass();
var instance=new extendsClass(); instance.showMsg();
</script>
<script type="text/javascript" language="javascript">
//如果我想使用extendClass的一个实例instance调用baseClass的对象方法showMsg怎么办?
function baseClass(){
this.showMsg=function(){
alert("baseClass::showMsg");
}
} function extendsClass(){
this.showMsg=function(){
alert("extendsClass:showMsg");
}
}
extendsClass.prototype=new baseClass();
var instance=new baseClass(); var baseInstance=new baseClass();
baseInstance.showMsg.call( instance );//显示baseClass::showMsg </script>
</body>
</html> 这个是引用的:http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html 的这位老大的,只是自己测试了下
javascript创建自定义对象和prototype的更多相关文章
- Javascript 中创建自定义对象的方法(设计模式)
Javascript 中创建对象,可以有很多种方法. Object构造函数/对象字面量: 抛开设计模式不谈,使用最基本的方法,就是先调用Object构造函数创建一个对象,然后给对象添加属性. var ...
- JavaScript中创建自定义对象的方法
本文内容参考JavaScript高级程序设计(第3版)第6章:面向对象的程序设计 ECMA-262中把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.”我所理解的就是对象就是一个结构 ...
- JS 创建自定义对象的方式方法
一.概述 还记得刚开始做项目的时候,看到别人封装的js工具类百思不得其解,看来看去看不懂,深挖一下,其实就是自己没有耐下心去看,但是遇到问题不解决,总会遇到的,今天还是遇到了,就去找了找帖子,重新思考 ...
- javascript的自定义对象/取消事件/事件兼容性/取消冒泡
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- JS创建自定义对象
普通对象的创建: 创建对象: 1.people = new Object(); people.name = "lin"; people.age = "26“; 2.创建字 ...
- JavaScript 创建类/对象的几种方式
在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的. JS对象是一种复合类型,它允许你通过变量 ...
- JavaScript—创建正则对象
创建正则对象 方式1: var reg = new RegExp('\d', 'i');var reg = new RegExp('\d', 'gi'); 方式2: var reg = /\d/i;v ...
- 通过JavaScript创建Qml对象
有两种方法可以创建,都是全局对象Qt提供的方法 一:用Qt.createComponent加载一个qml文件并创建Component 二:用Qt.createQmlObject从一个qml字符串创建C ...
- JavaScript创建Map对象(转)
JavaScript 里面本身没有map对象,用JavaScript的Array来实现Map的数据结构. /* * MAP对象,实现MAP功能 * * 接口: * size() 获取MAP元素 ...
随机推荐
- 光盘自动运行HTML页,Autorun文件写法
1.把你的网页放在一个根目录下面,起名为index.html 2.在目录新建一个autorun.inf的文件,打开后编辑为以下内容: 代码如下: [autorun]icon=***.ico(加图标) ...
- (转)@@trancount解析
在处理事务的时候,一般都用RollBack Transaction来回滚,但是如果在嵌套事务中这样使用的话,就会出现错误. 在SqlServer里,嵌套事务的层次是由@@TranCount全局变量反映 ...
- hashtable 和dictionary
hashtable 通过 key 和value 进行访问 不是 通过 索引访问 对类型没有强制规定 ,所以类型危险 容易出错 无效的key时 会返回空 dictionary 与hashtable 相区 ...
- iOS 关于时间戳的一些细节
最近遇到一个bug,在iPhone上获取当前的时间戳,没有问题,而用iPad来测试的时候,出现了时间戳不对.当时的代码 (需要精确到毫秒,所以*1000) NSTimeInterval t = [[N ...
- VC进程提权
如果我们想读取目标进程中的内存 就需要将进程提权 否则访问失败. 下面是提权代码 #include <TlHelp32.h> /****************************** ...
- w530 在ubuntu 12.04 _x64 背光调节方法
So to get the screen brightness keys working with your Nvidia graphics card, create a file in the xo ...
- MFC中使用ADO方式连接数据库
文章转自:http://blog.sina.com.cn/s/blog_a43aba5601014z8h.html 一.数据库操作准备 1.导入ADO动态链接库 在工程的stdafx.h中加入如下语句 ...
- 条形码/二维码之开源利器ZXing图文介绍
全文目录: 基本介绍 二维码(比如:QRCode)的编码和解码演示 条形码(比如:EAN-13)的编码和解码演示 [一]. 基本介绍 : 1-1. ZXing是一个开源Java类库用于解析多种格式的条 ...
- Mahout快速入门教程
Mahout 是一个很强大的数据挖掘工具,是一个分布式机器学习算法的集合,包括:被称为Taste的分布式协同过滤的实现.分类.聚类等.Mahout最大的优点就是基于hadoop实现,把很多以前运行于单 ...
- (摘) MDI登陆问题
MDI编程中需要验证用户身份,那么登陆窗口就需要在验证密码后进行相关的隐藏处理. (1)隐藏登陆窗口(登陆窗体作为启动) 登陆按钮事件:this.Hide();//隐藏登陆窗口MDI_Name M = ...