JS高级——扩展内置对象的方法
基本概念
内置对象有很多,几个比较重要的:Math、String、Date、Array
基本使用
1、内置对象创建出来的对象使用的方法使用的其实都是内置对象的原型对象中的方法
(1)a并没有charAt方法,但是它的原型确有此方法
<script>
var a = new String('hello');
console.log(a.charAt(1));
console.log(a);
</script>

2、所以扩展内置对象的方法,可以直接给原型对象的属性进行扩展
(1)将字符串的第一个字符转成大写
<script>
String.prototype.toUpper = function () {
// this[0]--会有版本兼容问题
var first = this.charAt(0);
first = first.toUpperCase();
return first + this.substr(1);
} var a = 'hello';
console.log(a.toUpper());//Hello
</script>
3、简单类型使用内置对象扩展方法的问题
(1)打印简单类型,返回都是都所赋的值,他们是怎么能够获取到内置对象的方法呢?
(2)简单类型调用内置对象方法的时候,会进行一个隐式的转换
<script>
'hello'.charAt(1);
//====>大概隐式转换过程
var _s = new String('hello');
_s.charAt(1);
_s = null
</script>
4、直接将内置对象的原型对象进行替换是系统不允许的,替换了也是白替换,在严格模式下 会直接报错'use strict'
5、所以最好的 方法是通过一个干净的中介,最后可以达到不修改原内置对象的目的
<body>
<script>
function Person() { }
Person.prototype = new Array();
Person.prototype.say = function () {
console.log(1);
}
console.dir(new Person());
console.dir(new Array());
</script>
</body>
JS高级——扩展内置对象的方法的更多相关文章
- JS高级---为内置对象添加原型方法
为内置对象添加原型方法 我们能否为系统的对象的原型中添加方法, 相当于在改变源码 我希望字符串中有一个倒序字符串的方法 //我希望字符串中有一个倒序字符串的方法 String.prototype. ...
- JS中的内置对象简介与简单的属性方法
JS中的数组: 1.数组的概念: 数组是在内存中连续存储的多个有序元素的结构,元素的顺序称为下标,通过下标查找对应元素 2.数组的声明: ①通过字面量声明var arr1 = [,,,,] JS中同一 ...
- javascript高级知识点——内置对象原型
代码信息来自于http://ejohn.org/apps/learn/. 可以修改内置对象的方法. if (!Array.prototype.forEach) { Array.prototype.fo ...
- jsp内置对象的方法
JSP内置对象的方法:out:out.print();request:request对象主要用于出列客户端请求. 常用方法: String getParameter(String name) ...
- JavaScript (内置对象及方法)
JavaScript中的对象分为3种:内置对象.浏览器对象.自定义对象 JavaScript 提供多个内置对象:Math/Array/Number/String/Boolean... 对象只是带有属性 ...
- javaScript中Math内置对象基本方法入门
概念 Math 是javaScript的内置对象,包含了部分数学常数属性和数学函数方法. Math 不是一个函数对象,用户Number类型进行使用,不支持BigInt. Math 的所有属性与方法都是 ...
- JS常见内置对象和方法
JS中常用的内置对象:Array对象.Date对象.正则表达式对象.string对象.Global对象 Array对象中常用方法: concat() 表示把几个数组合并成一个数组join() 设 ...
- js常用内置对象及方法
在js中万物皆对象:字符串,数组,数值,函数...... 内置对象都有自己的属性和方法,访问方法如下: 对象名.属性名称: 对象名.方法名称 1.Array数组对象 unshift( ) 数组开 ...
- JS-安全检测JavaScript基本数据类型和内置对象的方法
前言:在前端开发中经常会需要用到检测变量数据类型的需求,比如:判断一个变量是否为undefined或者null来进行下一步的操作,今天在阅读“编写高质量代码-改善JavaScript程序的188个建议 ...
随机推荐
- vue.js定义一个一级的路由 ----由浅入深
#### 定义一个路由- 实例化一个路由并设置路由映射表 - 实例化里面第一个参数 routes 路由映射表 - routes 里面参数 - path 路由的路径 - component 路由对应的组 ...
- 校长的收藏(洛谷 U4534)
题目背景 XS中学的校长喜欢收集手办,家里面都是价值不菲的手办. 校长喜欢给手办们排队并且对于某些些区间内的手办喜爱有加. 现在,校长外出散步(找乐子),你潜入他的房间打算借(偷走)他的手办炫耀一下. ...
- js 最简单的实现复制到剪切板 xl_copy
使用 npm install xl_copy // 项目中安装 import clipboard form 'xl_copy' // 引用 element.onclick = ()=>{ ...
- ArcGIS AO中控制图层中要素可见状态的总结
一.DefinitionExpression 实现新建查询图层,查询结果要素为选中状态 该接口可以通过两种方法来控制要素的可见状态. 思路1 通过该接口的 DefinitionExpression 方 ...
- php7.0升级到php7.1
$ add-apt-repository ppa:ondrej/php$ apt-get update$ apt-get upgrade php 来源:http://www.wuweixin.com/ ...
- NetCore实现全局异常捕捉统一处理
做net项目时候,在Global.asax文件中可以通过Application_Error方法全局捕获异常并处理后统一跳转到自定义的错误页面. 下面是我个人在NetCore项目中实现全局捕获异常并统一 ...
- nodejs shell
REPL (Read-eval-print loop),即输入—求值—输出循环.如果你用过 Python,就会知道在终端下运行无参数的 python 命令或者使用 Python IDLE 打开的 sh ...
- [miniApp] WeChat user login code
in client/app.js, we put user login logic inside here, so that other module can reuse those code by ...
- Win7 系统管理员设置了系统策略_禁止进行此安装_怎么办
系统管理员设置了系统策略,禁止进行此安装,怎么办 最佳答案 尝试方法一: windows开始菜单,运行里面输入gpedit.msc打开组策略, 在"计算机配置"→管理模板→ ...
- STM8S PWM 应用 呼吸灯
//主功能接受:使用MCU STM8S105C6 的PWM通道2 PC2 来做呼吸灯 已经验证OK,呵 //呵,这个PWM设置刚開始用还是有点麻烦,由于是自己摸索.花点时间.还是解决了 . //所用子 ...