用 prototype 属性提供对象的类的一组基本功能。 对象的新实例“继承”赋予该对象原型的操作。
// 向 javascript 固有类型 Array 扩展一个获得最小值的方法
Array.prototype.min = function() {
var min = this[0];
for (var i = 1; i < this.length; i++) {
if (this[i] < min) {
min = this[i];
}
}
return min;
}
// 在任意 Array 的实例上调用 min 方法
console.log([1, 23, 47, -1, 0].min()); // -1
注意,这里有一个陷阱。向 Array 原型添加扩展方法后,当使用 for - in 循环数组时,这个扩展方法也会被循环出来。
下面的代码说明这一点(假设已经向 Array 的原型中扩展了 min 方法):
var arr = [1, 23, 47, -1, 0];
var total = 0;
for (var i in arr) {
total += parseInt(arr[i], 10);
}
console.log(total); // NaN
// 可用下面的方法解决
var arr = [1, 23, 47, -1, 0];
var total = 0;
for (var i in arr) {
if (arr.hasOwnProperty(i)) {
total += parseInt(arr[i], 10);
}
}
console.log(total); // 70
分享到:
相关推荐
JavaScript中的`prototype`、`__proto__`和`constructor`是理解JavaScript面向对象编程的关键概念。这篇文章通过图解的方式深入浅出地解析了这三个概念之间的关系。 首先,`__proto__`属性是对象独有的,它指向对象...
标题 "prototype_oop_javascript_ruby_prototype_" 暗示了我们将探讨的是关于原型(Prototype)面向对象编程(Object-Oriented Programming, OOP)的概念,主要关注JavaScript和Ruby这两种语言之间的相似性和差异性...
1. 每个函数都有一个prototype属性,指向原型对象。 2. 每个对象都有一个__proto__属性,指向创建该对象的构造函数的prototype属性所指向的对象。 3. 通过函数构造实例化对象时,这个对象的__proto__属性会指向构造...
- **使用Map代替Object**:Map可以避免一些由于原型链导致的问题,因为Map不使用原型链。 - **Object.create(null)**:创建一个没有原型链的对象,因此也不会受到原型污染的影响。 7. **深入理解JavaScript**:...
在JavaScript中,遍历属性、理解`prototype`和掌握继承机制是编程中不可或缺的基本技能。本文将深入探讨这些概念,并通过实例来加深理解。 首先,让我们来看如何遍历JavaScript对象的属性。JavaScript提供了多种...
在JavaScript中,`prototype`和`__proto__`都是与对象继承和原型链紧密相关的概念,但它们在用途和性质上有所不同。以下是这两者的主要区别和详细解释: 1. **prototype(原型)** - `prototype`是函数特有的属性...
1、任何一个函数内都有prototype属性,这个prototype属性指向另一个对象 ,这个对象就是就是原型对象 ,简称原型。注意这个prototype是函数本身所自带的属性 2、原型的作用就是实现方法共享,将多个对象会调用的相同...
每个函数都有一个prototype属性,该属性是一个指针,指向一个对象。 而这个对象的用途是包含由特定类型的所有实例共享的属性和方法。使用这个对象的好处就是可以让所有实例对象共享它所拥有的属性和方法 2、 __proto...
1. 函数对象如`Foo`有`prototype`属性,而实例对象如`foo`没有直接的`prototype`属性,但有`__proto__`属性。 2. 构造函数`Foo`的`prototype`是一个新创建的`Object`实例,这个实例具有`constructor`属性,指向`Foo`...
JavaScript中的`prototype`、`__proto__`和`constructor`是理解JavaScript面向对象编程的关键概念。这篇文章将通过图解的方式帮助读者深入理解这三个属性的关系。 首先,`__proto__`属性,它存在于每个对象中,表示...
在JavaScript中,对象可以直接从另一个对象继承属性和方法,这主要是通过原型链(prototype chain)来实现的。 首先,每个函数都有一个`prototype`属性,这个属性是一个对象,当通过该函数创建新对象时,新对象会...
《prototype.js 1.6 中文文档》是一个针对JavaScript库Prototype的详细教程,旨在帮助开发者更好地理解和使用这个强大的工具。Prototype是JavaScript社区中广受欢迎的一个开源库,它为JavaScript编程提供了许多便利...
JavaScript中的prototype属性,getPrototypeOf方法和__proto__属性,是与原型链(prototype chain)相关的重要概念。它们在JavaScript对象继承机制中扮演着至关重要的角色。下面详细解释这些概念以及它们的使用方式...
1. **对象操作**:Prototype的核心特性之一是对JavaScript原型机制的扩展,使得类的概念更加清晰。它引入了`Class.create()`方法,允许开发者创建类的继承链,实现了面向对象编程的多态性和封装性。此外,`Object....
Prototype JavaScript 框架是前端开发...总之,Prototype_1.5.1_rc1_中文开发文档和prototype.js文件为开发者提供了强大的工具,无论是初学者还是经验丰富的开发者,都能从中受益匪浅,提升他们的JavaScript开发技能。
JavaScript中的`prototype`属性是面向对象编程的关键特性之一,它关联了函数(特别是构造函数)与实例之间的继承关系。每个函数都有一个`prototype`属性,这个属性是一个对象,包含了所有实例共享的方法和属性。当...
1. "Prototype_1.5.1_rc1_cnhandbook.chm" - 这个文件很可能是Prototype 1.5.1 Release Candidate 1的中文手册。"rc1"代表发布候选版本1,通常是软件正式发布前的最后一个测试版本。手册可能包含该版本的所有API参考...
### prototype属性的特性 1. **默认属性**:每个函数(除了`Function.prototype`之外)的`prototype`属性默认是一个具有`constructor`属性的对象,`constructor`属性指向该函数本身。 2. **原型链**:当试图访问一...