javascript核心技术(四十四)面向对象(四) 原型对象应用案例-给原生对象扩展方法

[复制链接]
查看: 1734|回复: 31
发表于 2023-1-28 14:14:37 | 显示全部楼层 | 阅读模式
前面我们已经讲了构造函数的prototype属性,已知该属性所有构造函数都有,并且我们知道实例对象可以使用原型链上的所有方法。根据这一原理,我们可以给内置的构造函数添加方法实现功能的扩展。
本节使用内置的String构造函数做为案例,其它内置函数同理。
我们知道在String构造函数中有两个方法toUpperCase(),它的作用是将字符串转为大写。假如我们有这样一种需求:将字符串的首字母转为大写。

实现原理如下:
定义一个函数,该函数先将传入的字符串参数转为小写,然后使用slice方法将第一个字符和其余的字符串截取出来,将第一个字符串转为大写,将其余的转为小写,二者连接起来返回。
然后我们把该函数赋值给String构造函数的原型对象,即构造函数.prototype,这样操作以后,我们就可以使用String构造函数来调用该方法,即实现了对String的扩展。

代码如下:
<!DOCTYPE html>
<html>
<head>
        <title>面向对象(四) 原型对象应用案例-给原生对象扩展方法</title>
</head>
<body>
        <script type="text/javascript">
        //定义两个构造函数
        String.prototype.todaxiefirst = function(){
                //首字母大写
                // console.log(this); // this 代表字符串本身
                //截取首字母 this.slice(0, 1)  截取其他的  this.slice(1)
                //this.slice(0, 1).toUpperCase()   this.slice(1).toLowerCase()
                //返回结果
                return this.slice(0, 1).toUpperCase() + this.slice(1).toLowerCase();
                
        }
        console.log("hEllo".todaxiefirst());
        </script>
</body>
</html>

javascript核心技术(四十四)面向对象(四) 原型对象应用案例-给原生对象扩展方法

以上代码中,可以使用字符串直接调用我们为String添加的to大写方法,实现了首字母大写的需求。

ok,这就是给内置对象扩展功能的实现原理,其实jquery这个插件库就是用该原理开发,它只不过是在window对象上添加了一个$方法而已,由于window上的方法可以省略window,所以调用方式为$()。

javascript核心技术(四十四)面向对象(四) 原型对象应用案例-给原生对象扩展方法


易博软件介绍

0

主题

12

帖子

7

积分

营销入门

Rank: 2

积分
7
发表于 2023-2-21 05:52:21 | 显示全部楼层
我想网络工程师但是我不知道要学习什么教材?  

0

主题

12

帖子

7

积分

营销入门

Rank: 2

积分
7
发表于 2023-3-4 21:15:51 | 显示全部楼层
转的?  不过转的好!

0

主题

12

帖子

7

积分

营销入门

Rank: 2

积分
7
发表于 2023-3-15 00:52:16 | 显示全部楼层
不管结果怎样,至少努力过.............
发表于 2023-3-24 05:23:27 | 显示全部楼层
看来我现在的数据结构与算法还听有用的  我要把他给学好  谢谢楼主

0

主题

20

帖子

11

积分

营销入门

Rank: 2

积分
11
发表于 2023-3-30 05:22:51 | 显示全部楼层
看后我十分相信,也十分赞同现在中国大学生的学习现状。

0

主题

20

帖子

11

积分

营销入门

Rank: 2

积分
11
发表于 2023-4-4 10:40:47 | 显示全部楼层
真得有收获

0

主题

15

帖子

8

积分

营销入门

Rank: 2

积分
8
发表于 2023-4-9 08:41:31 | 显示全部楼层
从大体上说,我也可以算的上一个初级程序员吧,学的语言很多,不过都不是很精,软件工程学的一点都不好,大部分原因是在学校和老师,谁让我们在这样的垃圾学校拉,不过,我在c和vb上有一点基础,可以这样说,我在学校还可以吧,不过看了你的帖子,我感到我真的不行。    以后希望大家在c和vb和单片机的c51方面多说说,谢谢!

0

主题

6

帖子

3

积分

营销入门

Rank: 2

积分
3
发表于 2023-4-14 01:33:53 | 显示全部楼层
感触很深!!!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~

0

主题

20

帖子

11

积分

营销入门

Rank: 2

积分
11
发表于 2023-4-18 20:44:42 | 显示全部楼层
感触很大,谢谢!我是一个VB初学者,向你至敬!  如梦初醒!  感谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1、请认真发帖,禁止回复纯表情,纯数字等无意义的内容!帖子内容不要太简单!
2、提倡文明上网,净化网络环境!抵制低俗不良违法有害信息。
3、如果你对主帖作者的帖子不屑一顾的话,请勿回帖。谢谢合作!
3、问答求助区发帖求助后,如有其他用户热心帮您解决问题后,请自觉点击设为最佳答案按钮。

 
 
QQ在线客服
QQ技术支持
工作时间:
8:00-18:00
软著登字:
1361266号
官方微信扫一扫
weixin

QQ|小黑屋|Archiver|慈众营销 ( 粤ICP备15049986号 )|网站地图

自动发帖软件 | 自动发帖器 | 营销推广软件 | 网络营销工具 | 网络营销软件 | 网站推广工具 | 网络推广软件 | 网络推广工具 | 网页推广软件 | 信息发布软件 | 网站推广工具 | 网页推广软件

Powered by Discuz! X3.4   © 2012-2020 Comsenz Inc.  慈众科技 - Collect from 深圳吉宝泰佛文化有限公司 公司地址:罗湖区黄贝街道深南东路集浩大厦A1403

返回顶部 返回列表