1、JavaScript面向对象编程
a.虽然js中都是函数,并没有像C#中那样“类”与“对象”的概念,但是为了方便编程,并且我们都习惯于使用面向对象的方式,所以在js中也需要实现类似于“类”与“对象”的面向对象的编程方式。(js也有内置对象)
b.js中的面向对象也都是通过维护变量的作用域等方式来模拟的
注:JavaScript中没有“类”的概念,全都是对象。“函数”是对象,通过new 关键字调用“函数”创建的也是对象。
“函数”本身是一个“函数对象”,而通过new关键字调用“函数”创建的对象又是另外一个对象,是两个不同的对象。
2、函数对象中的prototype属性:原型
a.prototype是“函数对象”的属性。(回忆“函数对象”其他成员)
b.通过该属性可以实现类似C#中的“扩展方法的功能”。
c.定义在prototpye中的成员是所有对象共享的。所以一般将方法定义在prototype中,而属性则定义在“构造函数”中。
d.通过该属性可以实现js中的继承。
3、JavaScript中的“继承”
js中的继承都是通过prototype实现的,所以一般叫做:“原型继承”。
注意:prototype属性只有函数对象才有(就像call()、apply()函数一样),
其他对象只有__proto__属性,没有prototype
4、Js中的“闭包”(*了解closure)
a.什么是“闭包”?
在一个函数内部又定义了一个函数,内部函数函数能访问外部函数作用域范围内的变量,这时这个内部函数就叫做闭包。无论这个内部函数在哪里被调用都能访问的到外部函数作用域中的那些变量。
b.“闭包”是怎么实现的?
通过作用域链
c.“闭包”能做什么?
改变变量作用域
Js中的面向对象都是用“闭包”来模拟的。
javascript面向对象
最新推荐文章于 2021-05-27 23:13:56 发布