摘要:原型链和简单对象一样获取和设置原型第三层构造器的构造器如何消除冗余特性的属性共享属性是怎么工作的检查是否在的原型链上。
第一层 单一对象 创建对象
对象:字符和数值的映射
属性:访问映射
方法:属性的值是函数
this 指向函数的接受者
var jane ={ //属性 name="Jane", //方法 describe:function(){ return "Person named"+this.name; }
对象和映射(map) 相同点:https://www.youtube.com/watch?v=VJOTcUsD2kA&t=6m16s
非常动态:自由删除增加属性
不同点:继承(原型链继承)
快速访问属性(通过构造器器)
第二层 原型链 prototype chains引出共享属性
var jane = { name:"jane", describe:function(){ return "Person named" +this.name; } }; var tarzan = { name:"Tarzan", describe:function(){ return "Person named" + this.name; } };
解决方案:通过原型继承
jane 和 tarzan 通过共享一个原型对象。
原型链和简单对象一样
var PersonProto ={ describe:function(){ return "Person named" +this.name; } } var jane = { __proto__:PersonProto, name:"Jane" }; var tarzan = { __proto__:PersonProto, name:"Tarzan" };获取和设置原型
es6: _proto _
es5:
Object.create()
Object.getPrototypeOf()
Obejct.create(proto):
var PersonProto = { decribe:function(){ return "Pseson named" + this.name; } }; var jane = Object.create(PersonProto); jane.name="Jane";
Object.getPrototypeOf(obj):
# Object.getPrototypeOf(jane) === PersonProto true第三层 构造器
persons的构造器
function Person(name){ this.name = name; this.decsribe = funciont(){ return "Person named" + this.name; }; } var jane = new Person ("Jane"); console.log(jane instanceof Person); //true如何消除冗余?
//特性的属性 function Person(name){ this.name = name; } //共享属性 Person.prototype.describe = function(){ return "Person named"+ this.name; }instanceof是怎么工作的?
value instanceof Constr
检查 constructor.prototype是否在value的原型链上。
Constr.prototype.isPrototypeOf(value)
目标: employee 继承 Person
function Person(name){ this.name = name; } Person.prototype.sayHelloto = function (otherName){ console.log(this.name +"says hello to" + otherName); } Person.prototype.describe = function(){ return "Person named" + this.name; }
Employee(name,title)和Person一样,除了:
其他属性:title
describe() return "Person named
为了继承,employee必须做:
继承Person的属性
创造属性title
继承Person的原型属性
重写Person.prototype.describe
function Employee (name,title){ Person.call(this,name); //继承所有属性 this.title = title ; //增加title属性 } Employee.prototype = Object.create(Person.prototype);//继承原型属性 Employee.prototype.describe = function(){//重写原型describe return Person.prototype.describe.call(this)+ "("+this.title+")"; //重写方法 }
https://www.youtube.com/watch?v=VJOTcUsD2kA&t=6m16s
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/78884.html
摘要:下面我们来使用面向对象类图这里就不再画了首先面试题中所提到的我们都可以看成类,比如停车场是一个类吧,它里面的车位是一个类吧,摄像头,屏幕。。。 以下是某场的一道面试题(大概): 1、一个停车场,车辆入场时,摄像头记录下车辆信息2、屏幕上显示所接收的车辆的信息情况(车牌号)以及各层车位的车位余量3、停车场一共四层车位,其中的三层都为普通车位,还有一层为特殊车位(体现在停车计费价格上面的不...
摘要:下面我们来使用面向对象类图这里就不再画了首先面试题中所提到的我们都可以看成类,比如停车场是一个类吧,它里面的车位是一个类吧,摄像头,屏幕。。。 以下是某场的一道面试题(大概): 1、一个停车场,车辆入场时,摄像头记录下车辆信息2、屏幕上显示所接收的车辆的信息情况(车牌号)以及各层车位的车位余量3、停车场一共四层车位,其中的三层都为普通车位,还有一层为特殊车位(体现在停车计费价格上面的不...
摘要:下面我们来使用面向对象类图这里就不再画了首先面试题中所提到的我们都可以看成类,比如停车场是一个类吧,它里面的车位是一个类吧,摄像头,屏幕。。。 以下是某场的一道面试题(大概): 1、一个停车场,车辆入场时,摄像头记录下车辆信息2、屏幕上显示所接收的车辆的信息情况(车牌号)以及各层车位的车位余量3、停车场一共四层车位,其中的三层都为普通车位,还有一层为特殊车位(体现在停车计费价格上面的不...
摘要:下面我们来使用面向对象类图这里就不再画了首先面试题中所提到的我们都可以看成类,比如停车场是一个类吧,它里面的车位是一个类吧,摄像头,屏幕。。。 以下是某场的一道面试题(大概): 1、一个停车场,车辆入场时,摄像头记录下车辆信息2、屏幕上显示所接收的车辆的信息情况(车牌号)以及各层车位的车位余量3、停车场一共四层车位,其中的三层都为普通车位,还有一层为特殊车位(体现在停车计费价格上面的不...
阅读 1885·2021-11-24 10:45
阅读 1428·2021-11-18 13:15
阅读 4474·2021-09-22 15:47
阅读 3832·2021-09-09 11:36
阅读 1987·2019-08-30 15:44
阅读 3061·2019-08-29 13:05
阅读 2478·2019-08-29 12:54
阅读 1966·2019-08-26 13:47