关联的威力:
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 这门语言充满看似 , 实际上并没有继承 , 所有的继承都是委托假装出来的样子 。
- javascript|穿戴设备将迎变革,OPPO又增新专利,能提升模式切换效率!
- |强劲送风,满足你对美感的挑剔—洛斐有范S桌面风扇
- 你甩不掉的伴侣——AEROPEXAS800初体验
- 趋势雷达|行业流行力——《新锐美妆种草看点》
- 社交平台cookie出卖了你——木马FFdroider欲窃取你的账户信息丨大东话安全
- 电子商务|广州蓝景分享 — 给刚入职前端\大佬\们的一些建议
- 开源软件|嵌入式开发:技巧和窍门——引导加载程序跳转到应用程序代码
- 三星|三星 S22 Ultra——硬件上的机皇,系统体验两极分化
- 天津航空——打造主题飞机 为智能大会插上“双翼”
- 支付宝|嵌入式开发:嵌入式基础——重启和重置的区别
