1。Array.prototype:就是Array的原型,很多时候理解这个原型有点不清不楚的
其实,有点像.NET里的反射
一个类凡是通过prototype加的属性,方法,都可以在这个类的对象里找到 对象.
有时候我们也直接在某一对象添加属性方法,那么只能这个对象里找到,重新创建的对象是没有
刚刚在上一对象里添加的属性方法的
内置的类型可以通过prototype找到内置的属性方法
Array.prototype.slice这句就是访问Array的内置方法
因为Array是类名,而不是对象名,所以不能直接用Array.slice
2。接下来说slice方法,这个简单
返回一个数组的一段。arrayObj.slice(start, [end]) 参数开始索引和结束索引,结束索引可以省略
3。call方法
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
调用一个对象的一个方法,以另一个对象替换当前对象
说明
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
这东西JS文档里我没找到怎么调用这个方法,功能是 调用一个对象的一个方法 自己的参数只有方法的所有者对象和要调用的方法参数,
查过资料才知道,Array.prototype.slice.call 是这么调用,只要 typesof fn ==="function" 的 fn类型都有 call 方法
伪组数元素
为什么要这么调用 arguments 的slice 方法呢?就是因为 arguments 不是真的组数,typeof arguments==="Object" 而不是 "Array"
它没有slice这个方法,通过这么Array.prototype.slice.call调用,JS的内部机制应该是 把arguments对象转化为Array
因为Array.prototype.slice.call调用后,返回的是一个组数
经典例子:
<script type= "text/javascript" > //<![CDATA[
function classA() {
this .name= 'bluedestiny' ;
this .show = function () {
alert( this .name);
}
} function classB() {
this .name = 'never-online' ;
} var objA = new classA();
var objB = new classB();
objA.show.call(objB); //]]></script> |
跟call类似的还有 apply 方法
应用某一对象的一个方法,用另一个对象替换当前对象。
apply([thisObj[,argArray]])
参数
说明
如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。
呵呵,这么火星的功能,实在是少见啊,估计也就是JS里
两者的区别: 对于apply和call两者在作用上是相同的,但两者在参数上有区别的。 对于第一个参数意义都一样,但对第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。 如 func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,[var1,var2,var3]) 同时使用apply的好处是可以直接将当前函数的arguments对象作为apply的第二个参数传入
相关推荐
【前端程序员面试分类模拟题及答案详解】 面试是评估求职者技能的重要环节,尤其是对于前端程序员来说,了解HTML、CSS、JavaScript以及网络协议等相关知识至关重要。以下是对题目中涉及的知识点的详细解释: 1. ...
- **颜色数组**: 通过`split("|")`方法将颜色字符串分割成数组。 - **随机选取颜色**: 使用`Math.random()`生成一个0到1之间的随机数,乘以颜色数组的长度后取整,从而随机选择一个颜色。 - **应用颜色**: 通过`...
- **方法三**:使用`::after`伪元素清除浮动(适用于非IE浏览器)。 #### 十一、文件和资源优化 - **优化方案**: - 文件合并:减少HTTP请求次数。 - 文件最小化/压缩:减小文件大小。 - 使用CDN托管:加快资源...
- `split()`:将字符串分割成数组。 - `join()`:将数组中的元素连接成一个字符串。 - **数组操作**: - `push()`:向数组末尾添加新元素。 - `pop()`:从数组末尾移除最后一个元素。 - `unshift()`:向数组...
毕设和企业适用springboot企业数据管理平台类及跨境电商管理平台源码+论文+视频
功能说明: 环境说明: 开发软件:VS 2017 (版本2017以上即可,不能低于2017) 数据库:SqlServer2008r2(数据库版本无限制,都可以导入) 开发模式:mvc。。。
labview程序代码参考学习使用,希望对你有所帮助。
毕设和企业适用springboot社交应用平台类及用户数据分析平台源码+论文+视频
大米外贸商城系统 简称damishop 完全开源版,只需做一种语言一键开启全球133中语言自动翻译功能,价格实现自动汇率转换,集成微信支付宝 paypal以及国外主流支付方式,自带文章博客系统。 软件架构 基于MVC+语言包模式,增加控制台,API导入产品方便对接其他系统(带json示例数据)。 使用要求 PHP7.4+ MYSQL5.6+ REDIS(可选) 安装方法 composer install 打开安装向导安装 http://您的域名/install 特色 1、缓存层增加时间与批量like删除 2、API产品导入方便对接其他系统 3、增加控制台命令行,命令行生成语言翻译包 4、后台一键开启自动翻译模式,支持全球133中语言,由于google代理翻译需要收费,这个功能需要付费。 5、可选购物车与ajax修改购物车产品 6、一键结算checkout 7、增加网站前台自定义路由 方便seo 更新日志 v3.9.7 集成鱼码支付接口,方便个人站长即使收款到账使用 v3.9.3 更新内容 1:增加ueditor与旧编辑器切换 2:增加可视化布局插
labview程序代码参考学习使用,希望对你有所帮助。
毕设和企业适用springboot生鲜鲜花类及生物识别平台源码+论文+视频.zip
毕设和企业适用springboot企业健康管理平台类及视觉识别平台源码+论文+视频.zip
毕设和企业适用springboot视频编辑类及餐饮管理平台源码+论文+视频.zip
labview程序代码参考学习使用,希望对你有所帮助。
毕设和企业适用springboot社区物业类及智能仓储平台源码+论文+视频
毕设和企业适用springboot企业知识管理平台类及人工智能医疗平台源码+论文+视频
毕设和企业适用springboot汽车电商类及新闻传播平台源码+论文+视频
毕设和企业适用springboot生鲜鲜花类及全渠道电商平台源码+论文+视频.zip
毕设和企业适用springboot企业数据智能分析平台类及投票平台源码+论文+视频
毕设和企业适用springboot全渠道电商平台类及人工智能客服平台源码+论文+视频