这个对象究竟是什么?
最直接的解释就是 , 这个对象是在调用 new Foo() 时创建的 , 最后会被关联到这个 「Foo 点 prototype」对象上 。
我不明白它这句话的意思 , 这个对象是在调用 new Foo() 时创建的?
这似乎是说当在只有当调用 new 的时候 , 才会创建 prototype, 但是这个函数 Foo 被创建的时候 , Foo.prototype 就已经存在了 。
最后被关联到 foo 的 prototype 对象 , 这句话的意思是 new Foo() 创建的对象 , 和 Foo.prototype 是同一个对象吗?
这里的意思很不清晰 , 应该是翻译的问题 。
function Foo() {
Foo.prototype = {a:121
var a = new Foo()
// 获取 a 的原型对象
Object.getPrototypeOf( a ) // { a: 121
a // { ___proto___: { a: 121 调用 new Foo() 时会创建 a , 其中的一步就是给 a 一个内部的 [[Prototype
似乎 , a 的原型和 Foo 的原型对象是同一个 。
链接 , 关联到 Foo.prototype 指向的那个对象 。
暂停一下 , 仔细思考这条语句的含义 。
在面向类的语言中 , 类可以被复制多次 , 就像用模具制作东西一样 。 我们以前看到过 , 之所以会这样是因为:实例化一个类就意味着「把类行为复制到物理对象中」 , 对于每一个实例都会重复这个过程 。
给 a 一个内部 [[Prototype
链接 , 关联到 Foo.prototype 指向的那个对象?
为什么要说的这么拗口?
直接说明: a 的原型绑定在 Foo 的原型上 , 它不简单明了吗?
这该死的翻译 , 傻逼!
但是在 JavaScript 中 , 并没有类似的复制机制 。 你不能创建一个类的多个实例 , 只能创建多个对象 , 它们 [[Prototype
实例化是对蓝图的实体化 。 妈的 , 你个傻逼翻译 , 写你妈呢?
关联的是同一个对象 。 但是在默认情况下并不会进行复制 , 因此这些对象并不会完全失去联系 。 它们是互相关联的 。
new Foo() 会生成一个新对象 , 这个新对象的内部链接 [[Prototype
JavaScript 中并不存在真正的类 , 只有对象 。 相关的原型将这些对象联系在一起 。
关联的是 Foo.prototype 对象 。
最后我们得到了两个对象 , 它们之间互相关联 , 就是这样 。 我们并没有初始化一个类 , 实际上我们并没有从「类」中复制任何行为到一个对象中 , 只是让两个对象相互关联 。
这就是这所有小节的唯一论点 , 妈的 , 难道不应该直接抛出来吗?为什么要在中间写出来 。。
实际上 , 绝大多数 JavaScript 开发人员都不知道的秘密是:new Foo() 这个函数调用实际上并没有直接关联 , 这个关联是一个意外的副作用 。new Foo() 只是间接完成了我们的目标:一个关联到其他对象的新对象 。
类的数据结构是一个栈 , 而实例化是一个复制拷贝的过程 。
JavaScript 中并没有 栈 这个结构 , 而复制拷贝是对这个结构的模仿 。
所以 , JavaScript 中没有真正的类 。 只是对类行为的模仿 。
一个关联到其他对象的新对象?
这句话是似乎是重点 , 但是你他妈在说尼玛呢?
一个新对象?关联其他对象?
这里的一个对象是指新创建的对象 , 这个对象的创建通过 new 创建 , 关联到其他对象也是 new 关键字的功能 , 将新对象和 Foo 对象进行绑定 。
- javascript|穿戴设备将迎变革,OPPO又增新专利,能提升模式切换效率!
- |强劲送风,满足你对美感的挑剔—洛斐有范S桌面风扇
- 你甩不掉的伴侣——AEROPEXAS800初体验
- 趋势雷达|行业流行力——《新锐美妆种草看点》
- 社交平台cookie出卖了你——木马FFdroider欲窃取你的账户信息丨大东话安全
- 电子商务|广州蓝景分享 — 给刚入职前端\大佬\们的一些建议
- 开源软件|嵌入式开发:技巧和窍门——引导加载程序跳转到应用程序代码
- 三星|三星 S22 Ultra——硬件上的机皇,系统体验两极分化
- 天津航空——打造主题飞机 为智能大会插上“双翼”
- 支付宝|嵌入式开发:嵌入式基础——重启和重置的区别
