1. ECMA-262把对象定义为:无序属性的集合,其属性可以包含基本值,对象和函数。每个对象都是基于一个引用类型创建的。
2. 属性有两种:数据属性和访问器属性,其中访问器属性不能直接定义,必须使用Object.defineProperty()来定义。
3. 任何函数,只要通过new操作符来调用,那它就可以作为构造函数。
4. 原型:无论什么时候,只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象。
这个连接存在于实例与构造函数的原型对象之间,而不是存在于实例与构造函数之间。
当代码读取某个对象的某个属性时,先搜索对象实例本身,如果在实例中找到了具有给定名字的属性,则返回该属性值;如果没有找到,则继续搜索指针指向的原型对象中是否有该属性。
5. 实例与原型之间的连接是一个指针,而非一个副本。
6. 若把原型修改为另外一个对象,就等于切断了构造函数和最初原型之间的联系。
7. 目前ECMAScript中使用最广泛的创建自定义类的方法是构造函数和原型混成模式。
8. 构造函数、原型和实例的关系:每个构造函都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。
8. 继承:ECMAScript只支持实现继承,不支持接口继承,而且其实现继承主要是依靠原型链。
时间: 2024-10-20 08:44:13