JavaScript遵守下面这些编程的基本规则:
- 所有的数据都是对象
- 要得到一个对象,不是通过实例化类,而是找到一个对象作为原型并克隆它
- 对象会记住它的原型
- 如果对象无法响应某个请求,它会把这个请求委托为它自己的原型
1. 所有的数据都是对象
js在设计的时候,仿照着Java引入了两套类型机制:基本类型和对象类型。
基本类型包括:undefined/number/string/boolean/function/object。设计者的本意是,除了undefined之外,别的都是对象。为了实现这一目标,number/boolean/string这几种基本类型数据也可以通过包装类
的方式来变成对象类型。
JavaScript中的根对象是Object.prototype对象。它是一个空的对象。js中的每个对象,实际上都是从Object.prototype对象可空出来的。
2. 要得到一个对象,不是通过实例化,而是找到一个对象作为原型并克隆它
在js中,我们并不需要关心克隆的细节,我们所需要做的只是显示地调用var obj1 = new Object()
或者var obj2 = {}
。此时,引擎内部就会从Object.prototype上面克隆一个对象出来。
下面的代码展示了用new运算符从构造器中得到一个对象:
function Person( name ) {
this.name = name
}
Person.prototype.getName = function() {
return this.name
}
var a = new Person( 'sven' )
console.log(a.name) // sven
console.log(a.getName()) // sven
console.log(Object.getPrototypeOf(a) === Person.prototype) // true
--continue--