- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
javascript中如何实现封装,继承以及多态,并有详细的示例
JavaScript与OOP
李赞红
欢迎交流:lifenote@21
目标
Function对象的apply方法
自定义对象
封装
继承
多态
apply()
Javascript的每个Function对象中有一个apply方法
语法:function.apply([thisObj[,argArray]])
功能:
可以用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
用来模拟多态
另外一个相似的方法
function.call([thisObj[,arg1[, arg2[, [,.argN]]]]])
示例
function Object1(name){
= name;
this.fun1 = function(){alert(这是第一个方法。);};
this.fun2 = function(){alert(这是第二个方法。);};
}
function Object2(name){
Object1.apply(this, [name]);
}
var o2 = new Object2(中华人民共和国);
o2.fun1();
o2.fun2();
alert();
基本概念
自定义对象
根据JS的对象扩展机制,用户可以自定义JS对象,这与Java语言有类似的地方。
如:Math、Date、String等
原型(prototype)
通过prototype可以为对象在运行期间添加新的属性和方法。
创建对象(1)
对象初始化器方式
语法
objectName = {property1:value1, property2:value2,…, propertyN:valueN,method1:function(arguments){…},…} 其中:property是对象的属性,value则是对象的值,值可以是字符串、数字或对象三者之一 。
示例
var Users = {
name:中国,
register:function(i){
alert(注册了 + i + 次);
}
};
Users.register(3);
alert(U);
创建对象(2)
构造函数方式
编写一个构造函数,并通过new方式来创建对象,构造函数本可以带有构造参数。
可以在对象中定义私有成员、实例成员和类成员
示例
//订单构造函数
function Order(date, total){
this.date = date;
this.total = total;
this.calc = function(name){
alert(name + 正在统计 + this.date + 下的订单,总数为 + this.total);
}
}
var o = new Order(new Date(), 10);
o.calc(李赞红);
对象属性的定义
私有属性
私有属性只能在构造函数内部定义与使用。
实例属性
必须在对象实例化后才能使用
prototype方式,语法格式:functionNpertyName=value
this方式,语法格式:pertyName=value
类属性
直接通过类名去使用
语法格式:functionNpertyName=value
示例
function Customer(){
= 北大青鸟; //对象属性
var browser = (document.all ? IE : FireFox); //私有属性
Ctotype.theBrowser = browser; //对象属性
}
Cpany = 北大青鸟教育集团; //类属性
//Test
alert(Cpany);
var c = new Customer();
alert( + \r\n + c.theBrowser);
对象方法的定义
私有方法
私有方法只能在对象内部使用
实例方法
实例方法必须在对象实例化后才能使用
语法与对象属性相同
类方法
类方法可以直接通过类名去使用
示例
function Miss(){
var you = function(){alert(“Miss you”);}//私有方法
this.me = function(){alert(“miss me”);}//对象方法
//对象方法
Mtotype.he = function(){alert(miss him);}
}
//类方法
Miss.she
原创力文档


文档评论(0)