关联的威力:
var anotherObject = {
cool: function() {
console.log( 'cool' )
var myObject = Object.create( anotherObject )
myObject.doCool = function() {
this.cool() // 内部委托
myObject.doCool() // cool
这里我们调用的 myObject.doCool() 实际上存在于 myObject 中 , 这可以让我们 Api 设计更加清晰 。 从内部来讲 , 我们的实现遵循的是委托设计模式 , 通过 [[Prototype
委托到 anotherObject.cool()
换句话说 , 内部委托比起直接委托可以让 API 接口设计更加清晰 。
小结如果要访问对象中不存在的一个属性 ,[[Get
好像确实看起来更好一点
操作就会查找对象内部 [[Prototype
关联的对象 。 这个关联关系实际上定义了一条「原型链」 , 在查找属性时会对它进行遍历 。
所有普通对象都有内置的 Object.prototype , 指向原型链的顶端 , 如果在原型链中找不到找不到指定的属性就会停止 。toString()、valueOf() 和其他的一些通用的功能都存在于 Object.prototype 对象上 , 因此语言中所有的对象都可以使用它们 。
层层往上 。
关联两个对象最常用的方法是使用 new 关键字进行函数调用 , 在调用的 4 个步骤中会创建一个关联其他对象的新对象 。
最外层是 Object.prototype
使用 new 调用函数时会把新对象的 .prototype 属性关联到「其他对象」 。 带 new 的函数调用通常被称为「构造函数调用」 , 尽管它们实际上和传统面向类语言中的类构造函数不一样 。
虽然这些 JavaScript 机制和传统面向类语言中的「类初始化」和「类继承」很相似 , 但是 JavaScript 中的机制有一个核心区别 , 那就是不会进行复制 , 对象之间是通过内部的 [[Prototype
链关联的 。
出于各种理由 , 以「继承」结尾的术语和其他面向对象的术语都无法帮助理解 JavaScript 真实机制 。
相比之下 , 「委托」是一个更合适的术语 , 因为对象之间的关系不是复制而是委托 。
【javascript|[[Prototype]] ——原型链两万字全面解析「建议收藏」】JavaScript 这门语言充满看似 , 实际上并没有继承 , 所有的继承都是委托假装出来的样子 。
- 编程|芒果口袋携手阿里巴巴地推第一人王志坚又掀业内新浪潮——成就数字化行业新高度!
- 九江市疾控中心新冠肺炎疫情常态化防控相关防护指南——图书馆篇
- 软件|黑色基调 ——西数SN770评测
- 传统媒体|品牌出海:Facebook广告投放指南——优惠广告怎么创建?
- 通讯:血染的小白鞋——一位“猪湾事件”幸存者的控诉
- 惠普新一代轻薄本——星14青春版|惠普星14青春版开售:全新12代酷睿 仅4099元
- javascript|在B端和C端公司做公关,有什么区别?
- javascript|现在分布式、云智能时代,应用软件开发简直得JavaScript者得天下
- 携程|现在分布式、云智能时代,应用软件开发简直得JavaScript者得天下
- 云米|0—1999元手机性价比排名:OPPO K9 Pro上榜!