Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
yunfour committed May 24, 2015
1 parent 7ae64db commit a09d1ff
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ seajs.use('./dist/createClass.js', function(createClass) {

## 实现原理

其实在大家的印象中JS实现面向对象的那一套东西很是蹩脚,首先,其继承模式使用原型链继承方式,和一般的类继承模式完全不一样;在此,JS没有私有属性的概念;还有,就是类(构造函数)和普通构造函数除了是否使用new去实例化,其他没多大区别,甚至经过改写不用new也可以去实例化;面向对象编程,其实说面向接口编程更合适,然而JS又没有接口的概念。等等,这些都是道出了JS面向对象编程的憋足。
其实在大家的印象中JS实现面向对象的那一套东西很是蹩脚,首先,其继承模式使用原型链继承方式,和一般的类继承模式完全不一样;其次,JS没有私有属性的概念;还有,就是类(构造函数)和普通构造函数除了是否使用new去实例化,其他没多大区别,甚至经过改写不用new也可以去实例化;面向对象编程,其实说面向接口编程更合适,然而JS又没有接口的概念。等等,这些都是道出了JS面向对象编程的憋足。

基于以上缺点,很多人在JS开发中,根本不去使用面向对象的概念(封装、继承、多态、接口),需要对象,就直接以字面量的形式直接创建,然后在对象上添加所需的属性和方法即可,甚至可以搞一个函数做成工厂模式,生成相应的对象,一样能解决问题,不可否认,确实能达到目的,并且在JS开发中有的时候还必须使用上面的形式。

Expand Down Expand Up @@ -330,4 +330,4 @@ setTimeout(function() {


## 总结
以上的描述是我对JS面对对象实现的一些解决方案,也是我对面向对象编程的理解,希望将这些东西总结、分享出来,对别人有帮助,更希望有高手指出其中的问题,学习进步。以上的理论,在createClass模块中都已经实现,并且自己也使用createClass创建了一些相对复杂的组件,之后我会逐渐将这些组件开源分享出来。
以上的描述是我对JS面对对象实现的一些解决方案,也是我对面向对象编程的理解,希望将这些东西总结、分享出来,对别人有帮助,更希望有高手指出其中的问题,学习进步。以上的理论,在createClass模块中都已经实现,并且自己也使用createClass创建了一些相对复杂的组件,之后我会逐渐将这些组件开源分享出来。

0 comments on commit a09d1ff

Please sign in to comment.