这篇文章写得非常好:https://www.cnblogs.com/lz-km/p/16103817.html
- 对js中对象和原型对象的个人理解:
- 对象:我们可以理解成和其他语言一样。
- 原型对象:我们可以理解成类上的属性,该类的所有对象都可使用,也可对数据覆盖。(像是java中类的静态数据static)
-
调用对象中的属性和原型对象属性是按什么流程访问的?
先查找对象中的属性 ——> 找不到的话,再查原型对象中的属性 -
举例:
//原型对象,最重要的作用就是把常量和方法独立到自身里. 供给其它 “自己的对象” 使用.
//定义构造方法
function Animal(name,age) {
this.name = name;
this.age = age;
}
//原生对象中添加属性
Animal.prototype.color="蓝色";
//原生对象中添加方法
Animal.prototype.eat=function () {
console.log(this.name+"大口干饭!!!")
}
var cat=new Animal("小花猫",3);
var cat1=new Animal("tom",5);
console.log(cat);
console.log(cat1);
console.log(cat.name+" "+cat.age+" "+cat.color);
console.log(cat1.name+" "+cat1.age+" "+cat1.color);
cat.eat();
cat1.eat();
/* 不过前提是,你的对象属性里面,没有定义color和eat()方法.不然会把原对象的覆盖掉
在cat.color的时候,首先,我们检查cat对象本身,从图中我们知道,cat有 name和age属性 和prototype指针属性.
并没有color,找不到以后,它会继续搜索原型对象里面,看能否找到color属性,如果有,就会调用原型对象的属性.*/
在执行cat.color的时候,首先,我们检查cat对象本身,从图中我们知道,cat有 name和age属性 和prototype指针属性.
并没有color,找不到以后,它会继续搜索原型对象里面,看能否找到color属性,如果有,就会调用原型对象的属性.
1336

被折叠的 条评论
为什么被折叠?



