【JavaScript】【对象】更好地明白对象继续

继续道理:实例中包含一个指向原型对象的内部指针

完成要领:让原型对象即是另一个范例的实例

症结点:

  1. 组织函数、原型对象、实例

  2. 实例属性、原型要领

  3. 组织关联、原型关联

  4. 自有属性、继续属性和要领

demo:

//组织器
function Animal() {
    this.animal = 'animal';
};
function Mammal() {
    this.mammal = 'mammal';
};
var cat;

//原型链
Mammal.prototype = new Animal();
cat = new Mammal();

//增加属性和要领
Animal.prototype.isAnimal = true;
Animal.prototype.sayAnimal = function() {
    alert('Is it ' + this.animal + '? ' + this.isAnimal);
};
Mammal.prototype.isMammal = true;
Mammal.prototype.sayMammal = function() {
    alert('Is it a ' + this.mammal + '? ' + this.isMammal);
};

先来看看每一个对象都能接见到哪些属性和要领:

Animal.prototype:

isAnimal    //自定义
sayAnimal()    //自定义

Mammal.prototype:

isMammal    //自定义
sayMammal()    //自定义
animal    //来自组织函数
isAnimal    //来自继续
sayAnimal()    //来自继续

cat:

mammal    //来自组织函数
isMammal    //来自继续
sayMammal()    //来自继续
animal    //来自继续
isAnimal    //来自继续
sayAnimal()    //来自继续

在这个demo中,有两对组织关联和两对继续关联(不斟酌Object)。每一个经由过程组织函数实例化的对象(Mammal.prototypecat)都具有组织函数中的属性,实例和组织函数之间是组织关联;组织过程当中也形成了原型关联Mammal.prototypecat的原型,Animal.prototypeMammal.prototype的原型,实例经由过程原型链找到原型中的属性和要领。

自定义和组织函数的属性是自有属性,它们是对象自身的属性。来自继续的属性和要领是对象沿着原型链找到的,它们并非对象自身的属性和要领

实例继续到的要领的作用域是该实例对象内部的实行环境,可以接见实例能获取到的一切属性。经由过程this.property的体式格局可以获得实例对象可以接见到的一切属性和要领,包含自有属性和继续的属性要领。demo中的实例对象cat可以接见到在AnimalMammal及其原型中定义的一切属性要领,这正是继续的意义地点。

考证:

console.log(cat.mammal);    //mammal
console.log(cat.isMammal);    //true
console.log(cat.sayMammal());    //Is it mammal? true
console.log(cat.animal);    //animal
console.log(cat.isAnimal);    //true
console.log(cat.sayAnimal());    //Is it animal? true

转载请说明出处:https://segmentfault.com/a/1190000004550787

文章不定期更新完美,假如能对你有一点点启示,我将不胜幸运。

    原文作者:hiYoHoo
    原文地址: https://segmentfault.com/a/1190000004550787
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞