• 风清不扬
    2019-01-29
    php 是世界上最好的編程語言
     3
     83
  • 37°C^boy
    2019-01-29
    这篇讲的思路太好了,追本溯源,娓娓道来。在这里不光能学到知识活着重温知识,还有关于学习和讲授的方法lun
    
     62
  • 米斯特菠萝
    2019-01-30
    好像winter老师没有回答过同学的提问,是我没看见吗?
     1
     35
  • hhk
    2019-01-30
    关键点在于是否可以在运行时动态改变对象

    结合文章通篇看下来,觉得 JS 的 OO 和他基于类的 OO 不同之处,在于 JS 可以在运行时修改对象,而 class based 的类只能预先全部定义好,我们并不能在运行时动态修改类。在我理解来说,条条大路通罗马,面向对象是罗马,class based 是一条路,prototype based 是另一条路。而且 Symbol 的出现,暴露出了许多内置接口,让 JS 又在这条路上走了更远一些。(以前上学背面向对象的三个特征,封装,继承,多态,现在看一下突然觉得很对。。。

    像我这种年轻一点的前端,很可能就只是相对熟悉 JS 而已,对于其他语言更多都是道听途说,计算机基础也比较薄弱,所以用来比较其实比较难。
    只知道 class based 的大概有 Java,C++, C#, Python

    另外,好奇 Symbol 是怎么实现的,希望老师以后能大概讲讲啦。暂时只想到这些,其他的还在消化
    展开
    
     29
  • 张汉桂-东莞
    2019-01-31
    var o = { get a() { return 1 } };
        console.log(o.a); // 1

    看到这段我就感到值了。我目前在用layui框架,根据layui文档的描述,只有执行var form = layui.form;这一句时才会下载form.js这个文件,我一直没能理解。这篇文章解除了我的疑惑,原来调用getter时可以不写括号()。谢谢老师!
     3
     24
  • bitmxy
    2019-01-29
    JS的設計者原本是個Lisp程序員而且不怎麼喜歡Java面向對象,所以採用了原型。在當時基於原型比基於類的做法要靈活很多。
     1
     20
  • 王小宏music
    2019-03-19
    var o = { get a() { return 1 } }
    console.log(o.a); // 1
    肯定有同学对这里有疑问,解释一下吧, 这里边应用到了ES6的getter,setter属性, 为啥o.a,没写小括号呢? 因为每次访问get,函数返回为1,作为一个value返回的,而非Obj中,调用某个方法,所以才没写成Obj.fun()的方式, 另外 老师下边有一句总结,很容易遗漏 ,每次访问,访问器属性,都会执行get,set方法
    
     15
  • _(:з」∠)_
    2019-02-02
    太难了(눈_눈)
    完全没看懂面向对象,有没有更加数学一点更加精确一点的定义啊。
    ( •̥́ ˍ •̀ू )
     1
     12
  • mone
    2019-02-12
    请问“运行时”是指什么?一开始我以为是指“程序执行的时候”这一时间状态,但是在正文倒数第三段又有“但是 JavaScript 提供了完全运行时的对象系统,这使得它可以模仿多数面向对象编程范式”这一句,这里的“完全运行时”是什么意思?我上网查了一下,好像没有比较符合的解析。
     3
     11
  • 如斯
    2019-02-13
    有个疑惑哈,讲道理symbolObj对象也是对象。也可以调用symbolObj.toString方法( symbolObj.toString() // "Symbol(a)" )。
    但为什么会 symbolObj+'' 会报错呢。
    Uncaught TypeError: Cannot convert a Symbol value to a string at <anonymous>:1:10

    作者回复: 这个问题问的很好,是这个东西在作怪:

    typeof Object(Symbol("a"))[Symbol.toPrimitive]()

     2
     10
  • 庖丁
    2019-01-29
    我们应该在理解其设计思想的基础上充分挖掘它的能力,而不是机械地模仿其它语言。
    
     10
  • 无羡
    2019-02-01
    这才理解数值属性和访问器属性!赞
    
     8
  • CC
    2019-01-29
    我暂时接触的编程有限,JavaScript 是我接触的第一个面向对象语言。

    由于缺少对其他语言的了解,winter 老师在文中的横向对比,感觉能让我更容易理解 JavaScript 的设计思路,以及 Object 这么设计的原因。

    关于ECMAScript 2015 加入的 “类”,其实它并不是 JavaScript 新增的面向对象模式,它主要是语法糖的作用,只是一种特殊的函数,背后仍然是基于原型的设计思路。
    
     7
  • 朋友
    2019-02-22
    getter setter实际应用的例子有哪些? vue的数据,视图双向绑定算吗?

    作者回复: vue2.0确实用到了这个。

     1
     5
  • Error
    2019-01-30
    老师是否按照犀牛书的顺序讲解😁
    
     5
  • Smallfly
    2019-01-29
    基于类的面向对象使用的是继承,而 Javascript 更像是组合。
    
     5
  • next_one
    2019-10-09
    我理解的,重学前端专栏的意义是,从语言使用者的角度,转到语言实现者的角度,来看待语言的发展,通过对比其他语言,来阐述js语言本身的特性。重学的意义在于,多数开发者是语言使用者,而没有从语言实现者的角度,对语言本身有思考。有一种“不识庐山真面目,只缘身在此山中”的感觉。简单说,就是大多数人就是用用,没有想过(或者没有能力)去了解语言本身的来龙去脉。
    
     3
  • cnzhujie
    2019-04-04
    个人理解:面向对象就是万物皆为类,离开了类就活不了;比如Java里面,就算只写个main函数也要用class包裹起来。而基于对象说的是这门语言可以使用类和对象,但不使用类和对象也照样玩的转,比如c++、php、js。

    作者回复: 不是的,基于类的面相对象只是一个派系。

     1
     2
  • 桂马
    2019-03-09
    js是一个具有动态性的面向对象的语言,ES2015前主要以“prototype”面向对象编程,ES2015问世后主要以“class”实现面向对象编程,我想super也是借鉴Java的,以后js可能还会有interface,那就更灵活了
    
     2
  • 快乐奔跑
    2019-02-14
    个人感觉JavaScript基于原型的面向对象设计比Java基于类的面向对象设计灵活
    
     2
我们在线,来聊聊吧