面向对象理论是抽象的全过程---->案例化的过程,我们通过JS对象建立实例化对象,那样实例对象和对象之间有什么样的关系呢?下面我们就用编码案例来讨论~
//自定对象
function Person(name,age,gender)
{
this.name = name;
this.age = age;
this.gender = gender;
this.eat = function ()
{
console.log("吃蒜拌油炸臭豆腐加榴莲酱");
};
}
对象---->创建对象per
var per = new Person('Linda',23,‘female’);
填补:console.dir(per)能够打印出目标per的构造(特性与基础属性)
之上大家可以得出实例对象与对象相互关系如下所示:
1. 实例对象是由对象来建立的---建立的全过程叫创建对象
2. 怎样判断对象是否某构造器创建对象得到的结果?(强烈推荐第二种)
1) 根据构造器的形式, 即实例对象.构造器==对象名称: console.log(dog.constructor==Animal);
2) 实例对象 instanceof 对象名称: console.log(dog instanceof Animal);
对象创建对象会引发难题,再来看下列事例
function Person(name, age) {
this.name = name;
this.age = age;
this.eat = function () {
console.log("今天吃红烧土豆");
}
}
var per1 = new Person("新手", 20);
var per2 = new Person("大黑", 30);
per1.eat();
per2.eat();
根据打印出结果显示false能够下结论per1,per2并不是分享eat方式,那样这很容易推理出根据自定对象建立的对象实例并不是节省存储空间,为此引出了原形来解决这个问题。
function Person(name,age) {
this.name=name;
this.age=age;
}
//根据原形来加上方式,处理信息共享,节约存储空间
Person.prototype.eat=function () {
console.log("吃凉拌菜");
};
var p1=new Person("小亮",20);
var p2=new Person("小红书",30);
根据打印出结论我们不难发现p1,p22个实例对象分享eat方式,完成了信息共享,节约存储空间。但我们查询实例对象的构造并没有发现eat方式 ,可是目标确实可以启用到eat方式,这是什么原因呢?
然后我们再查看一下对象Person的构造
根据console.dir(p1)查询对象构造时,我们不难发现它除了age,name特性外,还存在一个_proto_特性,值是一个目标,在JavaScript中被称作隐式原形。一个对象的隐式原形偏向结构该对象构造函数原型prototype, 这也保证了案例可以浏览在结构函数原型中界定的属性和方法。
汇总 JS对象-实例对象-原型对象相互关系
1. 对象能够实例化对象;
2. 对象中有一个特性叫prototype,是对象的原型对象;
3. 实例对象原型对象(__proto__)偏向是指该对象的原型对象(prototype);
4. 对象的原型对象(prototype)里的方式是可以被实例对象直接访问的;
5. 原形作用是共享信息 ,节约存储空间;
6. 必须互通的数据信息就界定在原形中,不用互通的数据信息写上对象中;
以上就是关于JS对象-实例对象-原型对象相互关系的具体内容,大量欢迎关注AdminJS其他类似文章!