<!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的更多相关文章

  1. Javascript 中创建自定义对象的方法(设计模式)

    Javascript 中创建对象,可以有很多种方法. Object构造函数/对象字面量: 抛开设计模式不谈,使用最基本的方法,就是先调用Object构造函数创建一个对象,然后给对象添加属性. var ...

  2. JavaScript中创建自定义对象的方法

    本文内容参考JavaScript高级程序设计(第3版)第6章:面向对象的程序设计 ECMA-262中把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.”我所理解的就是对象就是一个结构 ...

  3. JS 创建自定义对象的方式方法

    一.概述 还记得刚开始做项目的时候,看到别人封装的js工具类百思不得其解,看来看去看不懂,深挖一下,其实就是自己没有耐下心去看,但是遇到问题不解决,总会遇到的,今天还是遇到了,就去找了找帖子,重新思考 ...

  4. javascript的自定义对象/取消事件/事件兼容性/取消冒泡

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. JS创建自定义对象

    普通对象的创建: 创建对象: 1.people = new Object(); people.name = "lin"; people.age = "26“; 2.创建字 ...

  6. JavaScript 创建类/对象的几种方式

    在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的. JS对象是一种复合类型,它允许你通过变量 ...

  7. JavaScript—创建正则对象

    创建正则对象 方式1: var reg = new RegExp('\d', 'i');var reg = new RegExp('\d', 'gi'); 方式2: var reg = /\d/i;v ...

  8. 通过JavaScript创建Qml对象

    有两种方法可以创建,都是全局对象Qt提供的方法 一:用Qt.createComponent加载一个qml文件并创建Component 二:用Qt.createQmlObject从一个qml字符串创建C ...

  9. JavaScript创建Map对象(转)

    JavaScript 里面本身没有map对象,用JavaScript的Array来实现Map的数据结构. /* * MAP对象,实现MAP功能 * * 接口: * size()     获取MAP元素 ...

随机推荐

  1. NFinal 揭秘之控制器

    用NFinal框架开发的项目类似于MVC的那种开发方式,有Controller层.Model层.View层,还包括表现层Web层,在NFinal开发的项目中真正执行的代码也就是Web层中的代码,Web ...

  2. ASP.Net MVC与WebForm的区别

  3. AngularJs练习Demo9 Http

    @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport&quo ...

  4. java 中解析xml的技术

    最初,XML 语言仅仅是意图用来作为 HTML 语言的替代品而出现的,但是随着该语言的不断发展和完善,人们越来越发现它所具有的优点:例如标记语言可扩展,严格的语法规定,可使用有意义的标记,内容存储和表 ...

  5. hdu3714 三分

    Error Curves Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  6. STL set容器添加结构体并排序

    #include <iostream> #include <string> #include <cstring> //strcpy #include <cst ...

  7. android如何保存读取读取文件文件保存到SDcard

    android如何保存读取读取文件文件保存到SDcard 本文来源于www.ifyao.com禁止转载!www.ifyao.com 上图为保存文件的方法体. 上图为如何调用方法体保存数据. 上面的截图 ...

  8. 去除winXP访问共享的“记住密码”

    控制面板->用户帐户,选择自己的用户,在左侧的管理我的网络密码里有删除选项 控制面板-->用户-->点击你登陆用户-->点击左上角“管理我的网络密码”-->在列表中删除密 ...

  9. Send竞争对手:百度云一小时,QQ超大附件最多支持2G,邮件附件20M到50M不等(附国外所有storage列表)——痛点是,最大传输2G,最大容量只有3G(和微云不是一回事),转存到微云文件不能超过1G

    QQ邮箱最大可发送50M普通附件(群邮件则限制在2M).此外也可以使用超大附件功能,支持将1G的文件发往任意邮箱.QQ邮箱根据你的QQ邮箱容量的不同制定相应的接受附件限制,包括附件在内,2G用户所发送 ...

  10. hdu5772-String problem(最大权闭合子图问题)

    解析: 多校标答 第一类:Pij 表示第i个点和第j个点组合的点,那么Pij的权值等于w[i][j]+w[j][i](表示得分)第二类:原串中的n个点每个点拆出一个点,第i个点权值为 –a[s[i]] ...