推荐关注
› Meteor
› JSLint - a JavaScript code quality tool
› jsFiddle
› D3.js
› WebStorm
推荐书目
› JavaScript 权威指南第 5 版
› Closure: The Definitive Guide
HeFengzz

是为什么 JS 要有原型对象?

  •  
  •   HeFengzz · Mar 15, 2022 · 2480 views
    This topic created in 1693 days ago, the information mentioned may be changed or developed.
    实例 constructor 构造函数 constructor Object constructor Function constructor null 这样不行吗?
    thinkershare
    thinkershare
    Mar 15, 2022
    1
    不知道你写的二啥, 后面一段非常奇怪, 这个是 "constructor Object constructor Function constructor null " 什么意思?
    JS 对象当然可以没有原型, 原型只是原来实现继承的. 就是解释器实现的一个魔法属性罢了.
    HeFengzz
    HeFengzz
    OP
    Mar 15, 2022
    2
    @thinkershare 对不起我问了一个蠢问题,我实际上想知道 js 的继承和 java 的继承的实现有啥区别,JS 有个原型链的图,java 是不是也是一样的
    thinkershare
    thinkershare
    Mar 15, 2022
    3
    原型继承和基于类的继承有本质的不同. 你将 JavaScript 的对象理解为一个字典就好了, 而 Java 这种基于类型的继承是非常复杂的, 需要考虑静态绑定, 动态绑定, 类型对象, 类型对象指针, 同步索引等等. 本质上就是性能问题, JavaScript 的继承就是一个从. __prototype__对象上递归向上查找属性(方法+索引器是比较特性的属性)一个设计, 因此在读取上内存可以共享原型链上的数据成员(写入不可以), 而 Java 这种基于类的数据是不共享的, 只有方法代码可以共享.
    obulks
    obulks
    Mar 22, 2022
    4
    先说为什么要有 prototype 这个属性,此属性是用来 实现基于原型的继承 和 为其他对象提供共享属性,ECMAScript 语言规范的文档明指出了这一点,这是语言本身设计如此;其次他们的继承肯定是不一样的,Java 本身就是完全面向对象的语言,自己有类的概念,可以直接使用类的继承,使用类的各种特性,而 JavaScript 语言本身没有类,但可以利用原型和自身语言的特性来实现面向对象,类的继承和原型的继承这两种继承方式,他们之间其实没啥联系,单单说区别的话,直接看各自的实现原理得了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4956 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 01:16 · PVG 09:16 · LAX 17:16 · JFK 20:16
    ♥ Do have faith in what you're doing.