• 有大神能详细的讲解一下我在学习 Javascript 碰到的问题吗?

    2016/09/01 Rorooooooo 13 评论

1.Javascript一切皆对象这句话到底是不是对的?

2.面向对象与基于对象到底有什么不同?

3.如果说面向对象的定义是具有封装,继承,多态的特性的话那为什么Javascript不属于面向对象?

4.应该怎么理解Javascript中的上下文,怎么样理解this?

5.类的定义是什么,为什么说Javascript没有类的定义?

6.Javascript的 继承指的是什么,就是指子元素继承父元素的属性与方法吗,那么是不是就是实例化的意思?

7.Javascript中的对象实例化跟实例化有区别吗?

8.什么是递归?

9.闭包的定义是什么,闭包就是解决作用域的问题吗?

10.还有好多问题感觉学Javascript学的逻辑好混乱,是我不太适合学的原因吗

 

3 4 收藏


直接登录
最新评论
  • 匿名小板凳 java开发,支付 2016/09/02

    看一下js原型链,你这些问题应该都会明白吧,

  • DXkite 学生党 2016/09/02

    一切都是对象,这是对得(≧㉨≦),

    js我目测是基于对象的,因为他没有函数,

     

  • 木杉 web开发 2016/09/03

    面向对象和基于对象  应该就是 java和 javascript的 不同吧,所以需要你了解这种语言之后才能分清楚

  • 木杉 web开发 2016/09/03

    如果想了解清除这些东西,建议你看下这个系列的书 https://github.com/getify/You-Dont-Know-JS ,英文有问题的话就去买本  “你不知道javascript ”关于你的提问 都有很详细的解释

  • 胡衍生 fe 2016/09/06 精华评论

    感觉你提的问题都是好问题,同样身为一个前端的初学者试着回答一下你的问题,

    1.一切皆对象是对的,里面所有的类型都可以视为对象。

    2.面向对象和基于对象的却别,面向对象通常是先设计一个抽象的对象,然后去在此基础上去构建一个具体的对象,比如说Java中有明确的Class,Class非具体实例;基于对象是指已经存在一个具体的对象(实例),然后基于它的基础上补充填充,JavaScript没有类的概念,通过原型链来实现继承,每一个对象都是具体实际的实例,而不是抽象的对象。

    3.JavaScript是属于面向对象编程的,同时也有函数式的特点,不是标准的面向对象编程语言,所以可能一般不习惯称它为面向对象语言。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript

    4.(Xiaohua is a beautifu girl who stands on the board!) this就相当于这条语句里的who, 也就是指代这个对象的,这样会让代码含义表示得更符合人类直觉(猜测)。但是this指向的对象和上下文环境有关,所以过于灵活导致很多人比较困惑。

    以我的理解上下文就是this上下文,也就是作用域。http://wwsun.github.io/posts/scope-and-context-in-javascript.html

    5.类的定义就是声明的一个抽象的对象。举个简单的例子,学生是一个类,是一个声明了有姓名、年龄等众多属性方法的对象,但学生却是抽象的,现实中是不存在学生这个人的。只有实例化之后,比如学生小明,小明才是真正具体存在的学生。(基于对象,可能此时已经有一个人叫小明,小明已经有了众多属性和方法,基于(人-小明)基础上,在补充一些学生的属性和方法,这应该就是基于对象)

    6.JavaScript的继承是基于原型链的。每个对象都有一个prototype属性,假设A对象的prototype属性为B,那么可以理解为A继承自B。使用new方法创建A对象的实例时,所有的实例都会共享A对象prototype属性上的方法,这样就可以实现复用。假设一个方法A上没有,那么就回去他的父原型B上找,这样A的实例可以调用B上的方法,这样就是继承。(继承、多态、封装一切都是为了更加安全、结构清晰、合理的写代码)

    7.不懂题意,感觉没区别。

    8.递归其实很简单,就是自己调用自己。但如果不加限制条件,肯定会无限的调用自身下去,所以通常代码中会加限制条件。递归的好处是写代码符合自然逻辑,但坏处是通常性能会很慢(从前有座山,山里有座庙,庙里有个老和尚,老和尚跟小和尚说,从前有座山,山里有座庙,庙里有个老和尚,老和尚和小和尚说,)

    9.闭包就是子函数可以访问父函数的局部变量。闭包的好处我觉得是父函数的环境在,那么该局部变量会一直保存在内存中,同时还可以起到“保存记忆”的功能。至于其他封装和立即执行匿名函数等等长篇大论,我觉得跟闭包关系不大。

    10.不是你不适合学,是这门语言本身坑太多。