在JavaScript中没有类这一说法,对象也不是像其他语言那样规定死的实例。所有的对象都是继承自object类型,这也是它们有tostring()、valueof()方法的原因。
一、理解对象:对象中的属性分为两种,一种是数据属性:它有configurable(表示是否能删除)、enumerable(表示用for-in能否取出来)、writable(表示是否能修改)、value(包含数据值)、四个特性。
一种是访问器属性:它有configurable(表示是否能删除)、enumerable(表示用for-in能否取出来)、get()读取属性时调用、set()给属性赋值时调用、四个特性。
二、创建对象
工厂模式:原始的使用的是工厂模式创建对象,就是写一个函数在里面创建一个对象,给对象增加属性和方法。创建对象时调用这个函数就可以了,后来被构造函数模式代替。
构造函数模式:在工厂模式的基础上进一步优化,可以使用new操作符和给构造函数传递参数。但也有它的缺点,那就是方法没有共享性,每次创建对象的时候都会重新创建其方法。
原型模式:对象中加个prototype指针指向对象的原型,而对象的有一个constructor指针指向对象。这样就能够使所有的对象共享原型中的属性和方法了。但是它的缺点也很明显,
如果原型中有引用类型的数据值,它在一个对象中被赋值,那么其他对象访问时就是修改后的值了。
为了解决它们的缺陷,一般使用构造函数模式和原型模式组合创建对象。即使用构造函数模式创建对象中的属性,而用原型模式创建对象的方法。
继承:JavaScript中的继承指的是将一个子对象的prototype指向另一个父对象,形成原型链。那么子对象就可以访问父对象和父对象原型中的属性和方法了。
继承还有很多其他的方式,而且上面的描述也应该理解的不完全。(有待继续研读!)
                    
                
                
            
        
浙公网安备 33010602011771号