//javascript: apply, call, arguments的概念
var Class = function(){
var klass = function(){
//apply: http://www.cnblogs.com/fighting_cp/archive/2010/09/20/1831844.html
//arguments: http://www.cnblogs.com/Fskjb/archive/2011/10/27/2227111.html
this.init.apply(this,arguments);
};
klass.prototype.init = function(){};
//给"类库"添加方法
klass.fn = klass.prototype;
klass.extend = function(obj){
var extended = obj.extended;
for(var i in obj){
//给类添加属性
klass[i] = obj[i];
//给实例添加属性
//klass.fn[i] = obj[i];
}
if(extended)extended(klass);
}
return klass;
}
var Person = new Class();
Person.prototype.init = function(){
alert(arguments[0] + arguments[1]);
this.breath();
};
//给类添加函数
Person.eat = function(id){
alert("find");
}
Person.fn = Person.prototype;
Person.fn.breath = function(){
alert("breath");
}
Person.extend({
run: function(){
alert("run");
}
});
var person = new Person(1,2);
person.run();
分享到:
相关推荐
在JavaScript中,实现对象继承主要有三种方式:原型链继承(prototype)、构造函数继承和call/apply继承。下面将分别详细介绍这三种继承方式的具体用法和实现原理。 1. 原型链继承(prototype) 原型链继承是...
### 理解JavaScript中的`caller`...综上所述,理解`caller`、`callee`、`call`、`apply`以及`arguments`对象在JavaScript编程中至关重要,它们不仅增强了函数的灵活性和复用性,还提供了深入分析和调试代码的强大工具。
1、call,apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例(就是每个方法)都有call,apply属性。既然作为方法的属性,那它们的使用...
这篇文章将深入探讨四个关键概念:caller、callee、call和apply,它们都是JavaScript函数操作的核心部分,对于理解和使用高级JavaScript编程至关重要。 首先,我们来了解`caller`和`callee`。在JavaScript的函数...
`Array.prototype.slice.apply` 是 JavaScript 中一种巧妙的技巧,它允许我们借用 `Array.prototype.slice` 方法来处理非数组对象,尤其是 `arguments` 对象。`arguments` 是一个伪数组对象,它在每个函数内部可用,...
args = Array.prototype.slice.call(arguments, 1); // 从第二个参数开始的所有参数 return function() { self.apply(context, Array.prototype.slice.call(args, 0)); }; }; } ``` 此外,bind()方法可以和...
在JavaScript中,`call`和`apply`是两种非常重要的函数调用方式,它们都用于改变函数执行时的上下文,即改变`this`的指向。这两个方法的主要区别在于它们处理参数的方式。 `call`方法允许你指定一个对象来替代原...
例如,`Array.prototype.push.call(arguments, value)`可以在`arguments`对象上执行`push`方法,因为`arguments`虽然类似数组,但并不是真正的数组。 3. **模拟私有方法**: JavaScript中没有内置的私有方法机制,...
JavaScript中的`call`和`apply`是两种非常重要的函数调用方式,它们允许开发者改变函数执行的上下文,即函数内部的`this`值。这两个方法的主要区别在于传递参数的方式。 `call`方法的语法是`call(obj, arg1, arg2, ...
由于JavaScript中的Object.prototype.toString.call可以返回传入参数的准确类型,我们可以用此来检查一个对象是否为数组: ```javascript function isArray(obj) { return Object.prototype.toString.call(obj) ==...
在JavaScript中,`Function.prototype.apply()` 和 `Function.prototype.call()` 是两种非常重要的方法,它们用于在不同的上下文中调用函数,并允许我们灵活地传递参数。这两个方法的主要区别在于处理参数的方式,但...
`call`接受一系列参数列表,而`apply`则接受一个包含多个参数的数组或`arguments`对象。 #### 作用实例 **类的继承** 使用`call`或`apply`可以实现类的继承。通过调用父类的构造函数,并将子类的实例作为参数传入...
JavaScript语言精粹系列中,`apply`是一个非常重要的方法,它属于函数对象,是JavaScript中的一个核心特性。本文将深入探讨`apply`的用法及其在实际编程中的应用。 `apply`方法允许我们调用一个函数,并指定一个...
在JavaScript中,`apply`和`call`方法都是Function对象的内置方法,它们的主要作用是改变函数调用时的上下文(即`this`值),并允许我们在不同对象上执行同一方法,从而实现方法的借用。这两者在功能上相似,但参数...
_bind、call、apply 是 JavaScript 中的三个函数方法,用于改变函数的执行上下文,即改变函数中的 this 指向。下面我们将详细讲解这三个方法的使用和区别。 作用 _bind、call、apply 三者都是改变函数执行时的上...
Prototype 是一个轻量级的 JavaScript 库,它简化了 DOM 操作,并提供了一系列便捷的方法来处理对象、数组等基本类型。版本 1.3 相对于之前的 1.2 版本有了不少改进与增强,包括但不限于: - 注释的完善。 - 对象...
例如,`Array.prototype.push.call` 就是利用 `apply` 来调用数组原型上的方法,改变参数对象(如 `arguments`)。 4. 示例应用: - `currying`(柯里化):柯里化是一种将接受多个参数的函数转化为一系列接受单个...
1、关于javascript的apply和call函数 prototype.js中用了大量的apply和call函数,不注意会造成理解偏差。 官方解释:应用某一对象的一个方法,用另一个对象替换当前对象。 apply与call的区别是第二个参数不同。apply...
在这个实现中,`[].shift.apply(arguments)`用来移除数组的第一个元素(即`call`方法中的`this`值),剩下的参数被`apply`传入。 ### 2. 实现`bind` `bind`方法创建一个新的函数,在调用时`this`值被固定为指定的...
1. **Arguments对象**:当函数被调用时,JavaScript会创建一个`Arguments`对象,它包含了所有传递给函数的参数。`Arguments`对象并不是一个真正的数组,但它有一个`length`属性和索引访问机制,就像数组一样。这意味...