定义拷贝构造函数,Javascript 使用function定义构造函数(经

Javascript并不像Java、C#等语言那样支持真正的类。(也就是说没有类的概念)但是在js中可以定义伪类。做到这一点的工具就是构造函数和原型对象。首先介绍js中的构造函数。Javascript中创建对象的语法是在new运算符的后面跟着一个函数的调用(自己的解释:
深刻理解这句话了吗?这句话可以解释为什么一个很普通的函数可以用来新建对象:
function aa(){ //通过学习,我们早就知道了aa就是对象
alert();
this.a="aa";
return "aa";
}
var bb=new aa(); //函数,我们已经知道是一个对象了,那么为什么还可以new呢,这个是和JAVA不一致的地方。也是导致我郁闷了很久的地方。因为JAVA是不可能去new一个对象的,而只能去new一个类。那么为什么JS可以吗?就是因为:
Javascript中创建对象的语法是在new运算符的后面跟着一个函数的调用
这句话
alert(bb.a);
)如复制代码 代码如下:var obj = new Object();var date = new Date();
运算符new首先创建一个新的没有任何属性的对象,然后调用该函数,把新的对象作为this关键字的值传递。复制代码 代码如下:var date = new Date()的伪代码的实现就是var obj = {};var date = Date.call(obj);
构造函数的作用就是初始化一个新创建的对象,并在使用对象前设置对象的属性。如果定义自己的构造函数,只需要编写一个为this添加属性的函数就可以了。下面的代码定义了一个构造函数:复制代码 代码如下:function Rectangle(w, h){this.width = w;this.height = h;}
然后,可以使用new运算符调用这个函数来创建对象的实例复制代码 代码如下:var rect = new Rectange(4,8);
构造函数的返回值Javascript中的构造函数通常没有返回值。但是,函数是允许有返回值的。如果一个构造函数有一个返回值,则返回的对象成为new表达式的值。在此情况下,作为this的对象将会被抛弃。
使用构造函数定义法语法复制代码 代码如下:var object=new objectname();var -- 声明对象变量object -- 对象的名称new -- new的关键词(JavaScript关键词)objectname -- 构造函数名称
示例复制代码 代码如下://定义构造函数function Site(url, name){this.url = "www.jsdoc.cn";this.name ="梦之都";}//使用构造函数产生一个JavaScript对象的实例var mysite = new Site();alert(mysite.url);
构造函数通常可以初始化对象中的一些内容,JavaScript内部提供的一些对象通常需要使用构造函数的方法生成。JavaScript函数的内容将在下一章介绍。
直接定义法创建JavaScript对象复制代码 代码如下://定义对象语法var object={};//对象内的属性语法(属性名(property)与属性值(value)是成对出现的)object.property=value;//对象内的函数语法(函数名(func)与函数内容是成对出现的)object.func=function(){...;};
var -- 声明对象变量object -- 对象的名称property -- 对象的属性名func -- 对象的方法名说明:对象可以包含一些属性(函数可以看作带有括号的特殊属性),每个属性有名称和值。名称可以是任何字符串甚至是空。值可以是任何javascript类型,但不能是undefined。
使用定义法定义的对象示例复制代码 代码如下:var site = {};site.URL = "www.jsdoc.cn";site.name = "脚本之家";site.englishname = "jb51";site.author = "脚本";site.summary = "免费的网页设计教程";site.pagescount = 100;site.isOK = true;site.startdate = new Date(2005, 12);site.say = function(){alert(this.englishname+" say : hello world!")};site.age = function(){var theage=(new Date().getFullYear())-site.startdate.getFullYear();alert(this.name+"已经"+theage+"岁了!")}
使用构造函数创建JavaScript对象示例 -- 可以尝试编辑使用构造函数创建JavaScript对象上面的方法定义了一个site的对象,并且为其定义了七个属性,与两个个方法。
say方法会打印出jb51 say : hello world!的字符串age方法会计算出梦之都网站的年龄猴子提示: 注意每个属性与函数前面都要加上对象的名称,否则JavaScript无法判断它是属于那个对象的。
下面的课程将讲解直接定义法的延伸,JSON定义法。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>使用构造函数创建JavaScript对象 -- JavaScript教程</title> </head> <body> <p>构造函数法创建JavaScript对象</p> <script type="text/javascript"> //定义构造函数 function Site(url, name) { this.url = "www.jsdoc.cn"; this.name ="脚本之家"; } //使用构造函数产生一个JavaScript对象的实例 var mysite = new Site(); alert(mysite.url); </script> <p>直接法创建JavaScript对象</p> <script type="text/javascript"> var site = {}; site.URL = "www.jsdoc.cn"; site.name = "脚本之家"; site.englishname = "jb51"; site.author = "脚本"; site.summary = "免费的网页设计教程"; site.pagescount = 100; site.isOK = true; site.startdate = new Date(2005, 12); site.say = function(){alert(this.englishname+" say : hello world!")}; site.age = function(){var theage=(new Date().getFullYear())-site.startdate.getFullYear();alert(this.name+"已经"+theage+"岁了!")} site.age(); </script> <div style="margin-top:5em"><form method="post" action="#"><input type="button" name="dreamduinput" id="dreamduinput" style="border-width: 1px;color: #fff;background-color: #4289cb;" value="----上面的内容就对应着下面的代码,修改代码,并点我,查看一下效果吧!----" _disibledevent=><textarea name="dreamdutest" id="dreamdutest" rows="20" cols="120"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>使用构造函数创建JavaScript对象</title> </head> <body> <script type="text/javascript"> //定义构造函数 function Site(url, name) { this.url = "www.jsdoc.cn"; this.name ="梦之都"; } //使用构造函数产生一个JavaScript对象的实例 var mysite = new Site(); alert(mysite.url); </script> <p>直接法创建JavaScript对象</p> <script type="text/javascript"> var site = {}; site.URL = "www.jsdoc.cn"; site.name = "梦之都"; site.englishname = "dreamdu"; site.author = "可爱的猴子"; site.summary = "免费的网页设计教程"; site.pagescount = 100; site.isOK = true; site.startdate = new Date(2005, 12); site.say = function(){alert(this.englishname+" say : hello world!")}; site.age = function(){var theage=(new Date().getFullYear())-site.startdate.getFullYear();alert(this.name+"已经"+theage+"岁了!")} site.age(); </script> </body></html></textarea></form></div></body></html>
Tags:  定义拷贝构造函数

延伸阅读

最新评论

发表评论