Function.prototype的apply和call是在1999年发布的ECMA262 Edition3中才加入的(1998年发布ECMA262 Edition2)。在此前的的浏览器如IE5.01(JScript 5.0)中是没有apply和call的。因此会带来一些兼容性问题,以下是修复方式:
if(!Function.prototype.apply){
Function.prototype.apply = function(obj, args){
obj = obj == undefined ? window : Object(obj);//obj可以是js基本类型
var i = 0, ary = [], str;
if(args){
for( len=args.length; i<len; i++ ){
ary[i] = "args[" + i + "]";
}
}
obj._apply = this;
str = 'obj._apply(' + ary.join(',') + ')';
try{
return eval(str);
}catch(e){
}finally{
delete obj._apply;
}
};
}
if(!Function.prototype.call){
Function.prototype.call = function(obj){
var i = 1, args = [];
for( len=arguments.length; i<len; i++ ){
args[i-1] = arguments[i];
}
return this.apply(obj, args);
};
}
分享到:
相关推荐
Function.prototype.bindAsEventListener = function (object) { var __method = this; return function (event) { __method.call(object, event || window.event); }; }; ``` - **`Function.prototype....
2.Function.prototype.bindAsEventListener:与bind类似,但同时确保事件处理函数的事件对象作为第一个参数传递。 五、数组操作 1.Array.prototype.each:遍历数组并执行指定函数,类似于forEach。 2.Array....
同时,了解不同版本间的差异有助于你在特定项目中选择最适合的Prototype.js版本。 总的来说,Prototype.js作为一个强大的JavaScript库,为开发者提供了许多便利。通过深入学习和实践,开发者能够提升编写高效、可...
Prototype.js 是一个广泛使用的JavaScript库,它为JavaScript编程提供了丰富的功能和便利,旨在简化和优化在浏览器环境中进行的脚本编写。1.6.0.3 版本是该库的一个稳定版本,它包含了对先前版本的改进和修复,以...
在旧版本的IE中,由于JavaScript引擎的限制,可能会遇到解析或执行错误。 描述中提到的现象表明在Internet Explorer中,应用可能由于不兼容的语法或者其他与ExtJS有关的错误导致运行异常,而在Firefox这样的现代...
Function.prototype的apply和call是在1999年发布的ECMA262 Edition3中才加入...Function.prototype.apply){ Function.prototype.apply = function(obj, args){ obj = obj == undefined ? window : Object(obj);//obj可
3. **兼容性处理**:为了确保在各种环境(包括旧版本浏览器)下都能正常工作,`cezve.js` 可能会包含一些针对旧版 JavaScript 引擎的兼容性修复代码,比如使用 `try...catch` 来处理 `Object.create` 不支持的情况。...
Parent.prototype.method = function() {}; function Child() {} createSubClass(Child, Parent); var childInstance = new Child(); childInstance.method(); // 调用父类的方法 ``` `xbObjects.js`文件...
《Prototype 1.4.js 开发者手册》是JavaScript编程领域中一本重要的参考资料,它主要聚焦于Prototype JavaScript库的版本1.4。Prototype是一个广泛使用的JavaScript框架,它为JavaScript开发提供了许多实用的功能,...
在JavaScript开发过程中,有时会遇到特定环境下的兼容性问题,比如在iOS 12和MacOS上Safari 12.0浏览器中的`Array.prototype.reverse()`方法可能存在bug。`Array.prototype.reverse()`是JavaScript中用于反转数组...
这个"prototype最新版(很好用)"的压缩包文件包含了一个名为`prototype.js`的核心文件,这通常意味着它是Prototype库的最新版本。 Prototype库的核心特性包括但不限于以下几点: 1. **对象扩展**:Prototype通过...
3. **Function.prototype.bind**: 实现了函数绑定功能。 4. **String**: 增强了字符串处理,如trim、substring等。 5. **Date**: 改进了日期处理,如ISO 8601格式的支持。 6. **JSON**: 在没有原生JSON支持的环境中...
3. **兼容性处理**:PrototypeJS对老版本浏览器做了很好的兼容,如修复了一些IE浏览器中的问题,使得在不同环境下都能稳定运行。 五、与其他库的比较 PrototypeJS与jQuery、MooTools等库相比,各有优缺点。...
需要注意的是,`bind`方法不是所有浏览器都支持,尤其是较旧的版本。在不支持`bind`的浏览器中,可以使用`apply`的解决方案。 除了`getElementById`,其他类似的方法如`document.write`、`document.writeln`、`...
Prototype 的后续版本中,对性能进行了优化,增加了更多的功能,并修复了一些已知问题。学习和了解不同版本间的差异,有助于适应不断变化的开发需求。 综上所述,Prototype 1.4.0 是JavaScript开发中的一款重要...
然而,在早期版本中,`isFunction`函数在Internet Explorer (IE) 浏览器中存在BUG,导致它无法正确地识别一些原生DOM方法和函数如`alert`等。 在IE浏览器中,使用`typeof`检测某些方法(比如`alert`、`confirm`)...
在标题中提到的"prototype1.4.js"和"prototype1.5.js"是PrototypeJS的两个版本,分别代表了该库在不同时间点的开发状态。 1. **PrototypeJS基础概念**: PrototypeJS由Sam Stephenson创建,它的设计目标是提升...
使用`$H`创建的哈希对象可能会与prototype.js中的某些方法冲突,如`inspect`和`toQueryString`。即使哈希对象中存在某个键,这些方法可能无法正确处理。因此,当使用`$H`创建的哈希对象时,需要谨慎使用这些内置...
Animal.prototype.sayName = function() { console.log(this.name); } function Dog(name, breed) { Animal.call(this, name); this.breed = breed; } Dog.prototype = new Animal(); // 创建原型链 Dog....