Therefore, property inheritance occurs only when you read property values, not when you write them. If you set the property p in an object o that inherits that property from its prototype, what happens is that you create a new property p directly in o. Now that o has its own property named p, it no longer inherits the value of p from its prototype. When you read the value of p, JavaScript first looks at the properties of o. Since it finds p defined in o, it doesn't need to search the prototype object and never finds the value of p defined there. We sometimes say that the property p in o "shadows" or "hides" the property p in the prototype object. Prototype inheritance can be a confusing topic.
“读”属性的时候存在原型继承,而“写”属性的时候没有原型继承。自身的属性会覆盖从prototype继承得到的属性。
-----------------------------分隔线---------------------------
利用原型继承,可以扩展javascript中的原始类型。
function test() {
var word = "hello 2011";
word.extendMethod();
}
String.prototype.extendMethod = function(){
alert("this is a new method for String...");
};
-----------------------------分隔线---------------------------
当访问一个对象中的属性时,是自下而上查找的。比如:
function Cat(sName){
this.name = sName;
}
var cat = new Cat("kitty");
cat.toString();
当调用cat.toString()时,查找toString()方法的顺序是这样的:
1.首先在cat对象自身上查找,没找到。
2.在Cat.prototype属性上找,没找到。
3.由于Cat.prototype本身是一个对象,这里就是Object,于是在Object上找,找到了。
另一个复杂一点的例子:
function Animal(nAge){
this.age = nAge;
}
Animal.prototype.eat = function(){
// eat something
};
function Cat(sName){
this.name = sName;
}
Cat.prototype = new Animal();
Cat.prototype.constructor = Cat;
var cat = new Cat("kitty");
cat.eat();
当调用cat.eat()时,查找eat()方法的顺序是这样的:
1.首先在cat对象自身上查找,没找到。
2.在Cat.prototype属性上找,没找到。
3.Cat.prototype已经被指向一个Animal的实例,于是在这个匿名实例上查找,没找到。
4.在Animal.prototype属性上查找,找到了。
5.假设在步骤4中还是没找到,由于Animal.prototype本身是一个Object,接下来还会在Object上查找。
分享到:
相关推荐
instanceof:用来判断实例是否是属于某个对象,这个判断依据是什么呢?...实例对象属性查找顺序是:实例对象内部—->构造函数原型链—->实例对象父对象的原型链。 //继承机制 function A(){ } A.prototype.
4. **按字母顺序排列**:在提供的文件中,如Course_s.htm、Course_A.htm等,内容可能按字母顺序组织,便于用户快速查找特定的对象、属性或方法。例如,所有以"A"开头的属性和方法会集中在一起,方便查找"A"相关的...
Python中的对象属性访问是编程中常见且至关重要的操作。当你尝试访问一个对象的属性,例如`obj.field`,Python会遵循一套预定义的查找规则,这个过程涉及到了类层次结构和对象的内部机制。让我们详细地分解这个过程...
数据结构中的“查找”是计算机科学中一个基本且重要的概念,它涉及到在数据集合中寻找特定数据对象的过程。查找操作可以分为两种情况:搜索成功和搜索不成功。当搜索成功时,即找到了满足条件的数据对象,系统会报告...
1. **查找并修改控件的样式**:确保需要参与TAB顺序的控件包含`WS_TABSTOP`标志。 2. **调整`TABINDEX`值**:为控件分配适当的`TABINDEX`值,以确定其在TAB顺序中的位置。 #### 代码层面的修改 除了直接在资源文件...
通过面向对象的设计方法,我们可以将每个单词及其相关属性(如词义、例句、音标等)封装成一个对象,形成单词类。每个单词对象可以有自己的方法,如显示单词信息、检查拼写等,这样既保持了数据的完整性,又便于对...
- **新式类**:遵循广度优先原则,即按照MRO(Method Resolution Order,方法解析顺序)来进行查找。 **3. 特性** - 在Python 3中,不再区分经典类和新式类,所有的类都被认为是新式类,并且默认继承自`object`类。...
- **应用场景**:通过访问或修改 `Children` 属性,可以轻松地对子对象进行操作,如改变子对象的显示顺序、调整其属性等。 ##### 4. Clipping - **定义**:`Clipping` 属性决定了子对象是否仅在其父对象的边界内...
它支持随机访问,即可以通过下标直接访问到表中的任何一项,因此查找效率较高。 3. **成员类型**:班级成员主要分为两类:教师和学生。每种类型的成员具有不同的属性和职责。 - **教师**:教师的信息包括级别...
用来记录方法的查找顺序 super 函数是按mro 顺序向上查找 函数重写 repr(obj) str(obj) int(obj) complex(obj) bool(obj) float(obj) len(obj) abs(obj) ... iter(obj) next(obj) 迭代器和可迭代对象...
标题“Python对象模型”所涉及的知识点包括Python中的面向对象编程(OOP)概念、属性查找机制、描述符(Descriptors)、对象的实例化以及OOP的三大特征:封装、继承和多态。以下是详细的知识点: 面向对象编程(OOP...
本章主要讨论了查找表的基本概念和几种基本的查找方法,包括顺序查找和折半查找。 首先,关键字(keyword)是标识数据元素或记录的关键数据项,它可以是如名字、学号、电话号码等能用来定位信息的任何属性。关键字...
jsSort将向下导航对象图以查找属性。 在此版本中,jsSort假定将定义所有属性,而不是空对象。 jsSort可以按日期,数字和字符串值排序。 可以通过在属性字符串的开头附加“ [ASC]”或“ [DESC]”来设置每个属性的...
静态查找表是一种数据对象D,由具有相同特性的数据元素集合构成,每个元素都有能唯一标识它的关键字。它的基本操作包括创建表、销毁表、搜索元素以及遍历表。例如,创建一个静态查找表`Create(&ST, n)`会构造一个...
“字母排序显示+号分组”是指属性名在分组后会按照字母顺序排列,每个分组前面可能有一个“+”号。这里的“+”号通常用于展开或收起该组的详细内容,便于用户有选择性地查看或隐藏信息。例如,用户可以先看到大类...
原型对象(Prototype)主要用于实现对象间的继承,而原型链(Prototype Chain)则是JavaScript查找对象属性和方法的机制。 首先,每个函数都有一个`prototype`属性,它是一个对象,用于创建该函数实例时提供共享的...
至于“支持ADT”(抽象数据类型)的概念,这表明城市数据库系统采用了面向对象编程的思想,定义了一个表示城市的ADT,包含了城市的基本属性(如名称、坐标)以及相关的操作(如插入、查找、删除和打印)。...
5. **查找**:在顺序表中查找元素可以使用线性搜索,从头到尾遍历直到找到目标元素或遍历完整个表。如果需要高效的查找,可以考虑使用二分查找,但这要求顺序表是有序的。 6. **翻转**:顺序表的翻转可以通过交换...
学生类将包含学生的属性,如学号、姓名、成绩等,而系统类则负责管理这些学生对象,提供上述的各种操作接口。 代码实现时,可以考虑使用STL中的`std::vector`作为顺序表的底层数据结构,因为它提供了动态扩展和收缩...
每个对象都有自己的属性(或称为字段),这些属性定义了对象的状态,而方法则是对象可以执行的操作。例如,一个“学生”对象可能有“姓名”和“年龄”属性,以及“学习”和“玩耍”的方法。 排序,简单来说,就是...