JavsScript中的原生引用类型,例如Object类型,运用了构造函数模式吗?
js是基于原型继承的语言。创作之初参考scheme以函数作为一等公民,参考c语言语法,参考self语言的原型继承,所以它是三者优点的合集;起初叫livescript,当时java很火,公司就给他换了个名字叫JavaScript,其实他和java没半毛钱关系。原型继承的优点在于可以多重继承,可以模拟类,但类语言是永远无法模拟原型的。这就是JavaScript的灵活之处,可以函数式编程,也可以面向对象编程。
http://www.cnblogs.com/wangfu...
JavaScript中的类和对象本来就争议很大,因为其使用的是原型继承,是通过引用原型链上的方法实现的继承。你调用的对象上的方法,最终都是调用的Object.prototype上面的方法。这些方法即使不使用new来进行定义,使用对象字面量的方式进行定义,也是可以进行调用的。也就是如果你修改了Object.prototype上的方法,那么所有的对象调用的该方法都会改变。JavaScript里面所有的构造函数其实都是用原型继承的方法fake出来的。即使ES6里面新添加的class,本质上也是使用原型继承的方法实现的。所以还是要去深入了解原型继承到底是怎么实现的。
Object.prototype
new
class
js是基于原型继承的语言。创作之初参考scheme以函数作为一等公民,参考c语言语法,参考self语言的原型继承,所以它是三者优点的合集;起初叫livescript,当时java很火,公司就给他换了个名字叫JavaScript,其实他和java没半毛钱关系。
原型继承的优点在于可以多重继承,可以模拟类,但类语言是永远无法模拟原型的。这就是JavaScript的灵活之处,可以函数式编程,也可以面向对象编程。
http://www.cnblogs.com/wangfu...
JavaScript中的类和对象本来就争议很大,因为其使用的是原型继承,是通过引用原型链上的方法实现的继承。你调用的对象上的方法,最终都是调用的
Object.prototype
上面的方法。这些方法即使不使用new
来进行定义,使用对象字面量的方式进行定义,也是可以进行调用的。也就是如果你修改了
Object.prototype
上的方法,那么所有的对象调用的该方法都会改变。JavaScript里面所有的构造函数其实都是用原型继承的方法fake出来的。即使ES6里面新添加的class
,本质上也是使用原型继承的方法实现的。所以还是要去深入了解原型继承到底是怎么实现的。